在python中,如何将regex对象与使用flex的对象进行比较?
我有下面的代码,我想做的是,当它接收到文本搜索的输入时,它会发现它是否是一条指令,它是否是任何不是指令(ID)的单词,或者它是否是一个运算符,到目前为止,如果它找到一条指令,它会打印我,但在ID部分它也会打印我的集合,而不是例如jaja,那么我如何才能做到这一点呢在python中,如何将regex对象与使用flex的对象进行比较?,python,regex,Python,Regex,我有下面的代码,我想做的是,当它接收到文本搜索的输入时,它会发现它是否是一条指令,它是否是任何不是指令(ID)的单词,或者它是否是一个运算符,到目前为止,如果它找到一条指令,它会打印我,但在ID部分它也会打印我的集合,而不是例如jaja,那么我如何才能做到这一点呢 text_to_search="Set Sets UnionShowSets jaja:={hi};" import re t=re.search(r'Sets?|ShowSet|ShowSets|Union|Inters
text_to_search="Set Sets UnionShowSets jaja:={hi};"
import re
t=re.search(r'Sets?|ShowSet|ShowSets|Union|Intersect|SetUnion|SetIntersect',text_to_search)
s=re.search(r':=|{|}|;',text_to_search)
d=t=re.search(r'[a-zA-Z0-9]+',text_to_search)
if t:
print("Instruction: ")
print(t)
else:
print("ID: ")
print(d)
if s:
print("Operator: ")
print(s)
打印结果:
Instruction:
<_sre.SRE_Match object; span=(0, 3), match='Set'>
Operator:
<_sre.SRE_Match object; span=(27, 29), match=':='>
Instruction:
<_sre.SRE_Match object; span=(0, 3), match='Set'>
Instruction:
<_sre.SRE_Match object; span=(0, 3), match='Sets'>
Instruction:
<_sre.SRE_Match object; span=(0, 3), match='Union'>
Instruction:
<_sre.SRE_Match object; span=(0, 3), match='ShowSets'>
ID:
<_sre.SRE_Match object; span=(0, 3), match='jaja'>
ID:
<_sre.SRE_Match object; span=(0, 3), match='hi'>
Operator:
<_sre.SRE_Match object; span=(0, 3), match='{'>
Operator:
<_sre.SRE_Match object; span=(0, 3), match='}'>
Operator:
<_sre.SRE_Match object; span=(27, 29), match=':='>
Operator:
<_sre.SRE_Match object; span=(27, 29), match=';'>
说明:
接线员:
所需的打印结果:
Instruction:
<_sre.SRE_Match object; span=(0, 3), match='Set'>
Operator:
<_sre.SRE_Match object; span=(27, 29), match=':='>
Instruction:
<_sre.SRE_Match object; span=(0, 3), match='Set'>
Instruction:
<_sre.SRE_Match object; span=(0, 3), match='Sets'>
Instruction:
<_sre.SRE_Match object; span=(0, 3), match='Union'>
Instruction:
<_sre.SRE_Match object; span=(0, 3), match='ShowSets'>
ID:
<_sre.SRE_Match object; span=(0, 3), match='jaja'>
ID:
<_sre.SRE_Match object; span=(0, 3), match='hi'>
Operator:
<_sre.SRE_Match object; span=(0, 3), match='{'>
Operator:
<_sre.SRE_Match object; span=(0, 3), match='}'>
Operator:
<_sre.SRE_Match object; span=(27, 29), match=':='>
Operator:
<_sre.SRE_Match object; span=(27, 29), match=';'>
说明:
说明:
说明:
说明:
身份证件:
身份证件:
接线员:
接线员:
接线员:
接线员:
我只需将我不想再次打印的元素保存在列表中,就解决了这个问题:
text_to_search="Set Sets UnionShowSets jaja:={hola};"
import re
x=[]
for match in re.finditer('Sets?|ShowSet|ShowSets|Union|Intersect|SetUnion|SetIntersect',text_to_search):
print("Instruccion: ")
print(match)
x.append(match)
for match in re.finditer(r':=|{|}|;',text_to_search):
print("Operador: ")
print(match)
for match in re.finditer(r'[a-zA-Z0-9]+',text_to_search):
if match in x:
continue
else:
print("ID: ")
print(match)