我需要匹配字符串中的所有大写字母,但不能匹配我一直在使用的python中相同字母的重复项
from re import compile
regex = compile('[A-Z]')
variables = regex.findall('(B or P) and (P or not Q)')
但是可以匹配['B','P','P','Q'],但我需要['B','P','Q']。
谢谢!
答案 0 :(得分:3)
您可以使用带有反向引用的否定超前查询来避免匹配重复项:
{
id: "10",
proyek: "JuZka",
created_at: "2018-08-12 01:54:04",
updated_at: "2018-09-23 05:49:13",
modul: [ ]
},
这将返回:
re.findall(r'([A-Z])(?!.*\1.*$)', '(B or P) and (P or not Q)')
答案 1 :(得分:0)
如果订单很重要,那么:
print(sorted(set(variables),key=variables.index))
或者如果您拥有more_itertools
软件包:
from more_itertools import unique_everseen as u
print(u(variables))
或者如果版本> = 3.6:
print(list({}.fromkeys(variables)))
或OrderedDict
:
from collections import OrderedDict
print(list(OrderedDict.fromkeys(variables)))
全部复制:
['B', 'P', 'Q']