私は次のコードを持っています、私がやろうとしているのは、text_to_searchから入力を受け取ると、それが命令であるか、命令(ID)ではない単語であるか、演算子であるかを検出することです。これまでのところ、命令が見つかった場合は出力されますが、ID部分では、たとえばjajaの代わりにSetも出力されます。これを実現するにはどうすればよいですか?
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=';'>
もう一度印刷したくない要素をリストに保存するだけで修正しました。
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)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加