我是新的正则表达式,我想知道如何生成一个模式的字母,包括特殊字符和大写字母从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或更高的模式。
你能提出一个好的解决方案吗?提前感谢!
发布于 2022-05-12 19:32:31
>>> 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']只需在字符类中添加空间(在\w之后不需要“+”),范围从3到4以匹配"LOC“(或任何您需要的范围)。从一个白体开始,以避免匹配前导空格(这也与_匹配,但这里没有问题)
https://stackoverflow.com/questions/72221125
复制相似问题