use*_*982 1 python regex python-2.7
我想对阵*=,&=,+=,-=,|=,和^=正则表达式,但由于某些原因,下面的图案,可同时接收<=和>=:
modifyPat = re.compile('\s*[&\|\*/%\+-^]*=[^=]*')
Run Code Online (Sandbox Code Playgroud)
我做了一些挖掘,发现问题出现是由于^在模式中包含了字符.例如,如果我删除^下面的模式中的as,我会得到预期的匹配行为,但当然会失去能力匹配^=:
modifyPat = re.compile('\s*[&\|\*/%\+-]*=[^=]*')
Run Code Online (Sandbox Code Playgroud)
这里发生了什么,是否有任何方法可以包括^角色,以便匹配^=而不是匹配<=和>=我想要的?
定义方式集有很多自由度,并且有自己的metasyntax:
[+-^]
Run Code Online (Sandbox Code Playgroud)
这意味着之间的所有字符+,并^在ASCII表,这是他们中的很多,包括<和>以及所有的信件.
要解决这个问题:
[\+\-\^]
Run Code Online (Sandbox Code Playgroud)
即使不是非常必要,也可以逃避任何不规则的事情.