Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中,如何将regex对象与使用flex的对象进行比较?_Python_Regex - Fatal编程技术网

在python中,如何将regex对象与使用flex的对象进行比较?

在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

我有下面的代码,我想做的是,当它接收到文本搜索的输入时,它会发现它是否是一条指令,它是否是任何不是指令(ID)的单词,或者它是否是一个运算符,到目前为止,如果它找到一条指令,它会打印我,但在ID部分它也会打印我的集合,而不是例如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=';'>
说明:
接线员:
所需的打印结果:

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)