2017-02-15 76 views
1

我想对阵*=&=+=-=|=,并在正则表达式^=,但由于某些原因,下面的图案,可同时接收<=>=“^”字符匹配两个“<' and '>”在Python正则表达式

modifyPat = re.compile('\s*[&\|\*/%\+-^]*=[^=]*') 

我已经做了一些挖掘,发现问题就出现了,由于列入模式^性格。如果,例如,我删除了^如在下面的模式,我得到预期的匹配的行为,当然输给^=能力匹配:

modifyPat = re.compile('\s*[&\|\*/%\+-]*=[^=]*') 

这到底是怎么回事,有没有什么办法包括^字符为了匹配^=没有也符合我想要的<=>=

+3

看看'[+ - ^]',连字符必须在最后,'^'不应该在开头。 –

+1

另外,使用原始字符串:'r'...''。 – user2357112

回答

6

定义集的方式有很多纬度,和其自身的元语法:

[+-^] 

这意味着所有+并在ASCII表,这是他们中的很多^与之间的字符包括<>以及所有字母。

要解决这个问题:

[\+\-\^] 

摆脱任何不规则通常是一个好主意,即使不是绝对必要的。

+0

谢谢你的解释。我几乎从不使用字符范围,并且出于某种原因忘记了'-'被用于此目的。 – user3570982

+0

正则表达式正因为这个原因而声名狼借。 – tadman