正则表达式匹配字符串和特殊字符
Regex to match string and special characters
我是正则表达式的新手,我想知道如何使用包含特殊字符和大写字母的字母生成 3 个以上字母的模式。
假设我有这样一个字符串:
my_string = 'Syrians/NORP, Turkish/NORP, Turkish/NORP, Turkish/NORP, the last 2 , 3 years/DATE, Turkey/LOC'
我尝试过的:
my_new_string = re.findall('[\w+\,]+/[A-Z]{4}', my_string)
#result
['Syrians/NORP', 'Turkish/NORP', 'Turkish/NORP', 'Turkish/NORP', 'years/DATE']
预期结果:
['Syrians/NORP', 'Turkish/NORP', 'Turkish/NORP', 'Turkish/NORP', 'the last 2 , 3 years/DATE', 'Turkey/LOC']
我也对 3 或以上的大写字母模式感到困惑。
你能提出一个好的解决方案吗?提前致谢!
>>> re.findall(r'\w[\w, ]+/[A-Z]{3,4}', my_string)
['Syrians/NORP', 'Turkish/NORP', 'Turkish/NORP', 'Turkish/NORP', 'the last 2 , 3 years/DATE', 'Turkey/LOC']
只需将 space 添加到您的角色 class(\w
后不需要 '+'),范围从 3 到 4 以匹配“LOC”(或您需要的任何范围)。以字母数字开头以避免匹配前导 spaces(这也匹配 _
顺便说一句,但这里不是问题)
我是正则表达式的新手,我想知道如何使用包含特殊字符和大写字母的字母生成 3 个以上字母的模式。
假设我有这样一个字符串:
my_string = 'Syrians/NORP, Turkish/NORP, Turkish/NORP, Turkish/NORP, the last 2 , 3 years/DATE, Turkey/LOC'
我尝试过的:
my_new_string = re.findall('[\w+\,]+/[A-Z]{4}', my_string)
#result
['Syrians/NORP', 'Turkish/NORP', 'Turkish/NORP', 'Turkish/NORP', 'years/DATE']
预期结果:
['Syrians/NORP', 'Turkish/NORP', 'Turkish/NORP', 'Turkish/NORP', 'the last 2 , 3 years/DATE', 'Turkey/LOC']
我也对 3 或以上的大写字母模式感到困惑。
你能提出一个好的解决方案吗?提前致谢!
>>> re.findall(r'\w[\w, ]+/[A-Z]{3,4}', my_string)
['Syrians/NORP', 'Turkish/NORP', 'Turkish/NORP', 'Turkish/NORP', 'the last 2 , 3 years/DATE', 'Turkey/LOC']
只需将 space 添加到您的角色 class(\w
后不需要 '+'),范围从 3 到 4 以匹配“LOC”(或您需要的任何范围)。以字母数字开头以避免匹配前导 spaces(这也匹配 _
顺便说一句,但这里不是问题)