繁体   English   中英

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

[英]Difference between character sets in Python and re2c regular expressions

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

我意识到Pythonre2c正则表达式中的字符集之间可能存在差异。 我知道两者有什么共同点:

  • 都接受范围,例如[az]匹配所有小写字母
  • 两者都接受使用[^ ...]表示法的逆集合
  • 两者都接受常见的字母数字和其他一些字符(空格等)。

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

  • 需要在字符集中转义的字符
  • 如果我想匹配该字符而不指定反向集或范围,则在字符集内何处放置文字“-”或“ ^”

您能解释一下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', '^']

我会逃避任何引起混乱的事情-

/[][]/匹配']'或'['
/[[]]/匹配“ []”
/[]]]/匹配']]'
/[[[]/匹配'['
/[]/是错误的'['错误

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM