正则表达式匹配字符串和特殊字符

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(这也匹配 _ 顺便说一句,但这里不是问题)