我有下面的代码,我想做的是,当它接收到来自text_to_search的输入时,它会发现如果它是一个指令,它不是一个指令( ID )或者是一个操作符,到目前为止,如果它创建了一条指令,它就会打印我,但是在ID部分它也会打印me Set,而不是jaja,那么我如何实现这一点呢?
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=';'>发布于 2018-05-25 17:27:58
我只是通过将不想再次打印的元素保存在列表中来修正它:
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)https://stackoverflow.com/questions/50533816
复制相似问题