Python中的字符集与re2c正则表达式之间的区别
问题描述:
正则表达式中的字符集使用[]指定。字符集匹配任何一个附加字符。例如,[abc]将匹配'a','b'或'c'中的一个。Python中的字符集与re2c正则表达式之间的区别
我意识到Python和re2c正则表达式中字符集之间存在潜在的差异。我知道什么是在两个相同的:
- 双方接受的范围,例如[AZ]小写字母匹配
- 无论使用[^ ...]符号
- 双方共同接受的字母数字接受反套和其他一些字符(空格等)
但我很担心,这些可能是不同的:
- CHARACT需要的字符内进行转义ERS设置
- 在哪里放置文字“ - ”或“^”设置,如果我想匹配的字符,而不是指定设定反向或范围内的字符内
你能解释Python和re2c字符集之间的区别吗?
答
看看您提供的re2c手动链接,看起来re2c使用相同的语法,只是该语法的一个子集。
为了解决您的具体问题对正则表达式的语法
人物需要的字符集内进行转义。
你指的是什么字符?
在哪里放置文字
-
或^
字符集里面......
对于^
,任何地方,但一开始应该做的,并为-
,任何地方,但在中间应该做的。
>>> import re
>>> match_literal_hyphen = "[ab-]"
>>> re.findall(match_literal_hyphen, "abc - def")
['a', 'b', '-']
>>> match_literal_caret = "[a^b]"
>>> re.findall(match_literal_caret, "abc^def")
['a', 'b', '^']
+0
我指的是字符。$ * +?{}()在Python中有特殊含义,我假设反斜杠和[]需要转义,即我会使用[\\ [\\] \\ \]匹配任何'[',']','\' – 2011-01-21 18:29:20
答
我会逃避任何导致混乱 -
/[][]/
匹配 ']' 或 '[' /[[]]/
匹配 '[]' /[]]]/
匹配 ']' /[[[]/
匹配“[ '/[]/
是一个不匹配的'['错误
从来没有听说过或使用过re2c,但实例看起来就像你的平均PCRE - 和Python`re`也是PCRE一样,所以不应该有显着的差异(像lookaround这样的更高级特性中的最微妙的语义差异)。 – delnan 2011-01-21 16:46:04
re2c是PCRE/Python的精简版。它使用DFA来一次检查多个普通表达式的匹配。总之,如果我有'm'个长度为O(n)个字符的正则表达式,那么re2c决定哪个匹配O(n),而不是O(m * n),PCRE和Python最多可以做什么。 re2c的权力较小,所以字符少意味着特殊暗示字符集可能不同。 – 2011-01-21 18:39:42