Python和re2c正则表达式中字符集之间的区别

时间:2011-01-21 16:38:19

标签: python regex

正则表达式中的字符集使用[]指定。字符集匹配任何一个包含的字符。例如,[abc]将匹配“a”,“b”或“c”中的一个。

我发现Pythonre2c正则表达式中的字符集之间可能存在差异。我知道两者都是一样的:

  • 两个接受范围,例如[a-z]匹配所有小写字母
  • 两者都使用[^ ...]符号
  • 接受逆集
  • 两者都接受常见的字母数字和其他一些字符(空格等)

但我担心这些可能会有所不同:

  • 需要在字符集中转义的字符
  • 如果我想匹配该字符并且未指定反向集或范围,则在字符集中放置文字“ - ”或“^”的位置

你能解释一下Python和re2c字符集之间的区别吗?

2 个答案:

答案 0 :(得分:1)

查看您提供的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', '^']

答案 1 :(得分:0)

我会逃避任何导致混淆的事情 -

/[][]/匹配']'或'['1 /[[]]/匹配'[]'
/[]]]/匹配']]'
/[[[]/匹配'['1} /[]/是一个无法匹配的'['错误