在令人敬畏的正则表达式模块(https://pypi.python.org/pypi/regex)的pypi页面中,声明\ G可以"用于负可变长度的外观,以限制外观后移的程度".非常有趣,但页面没有给出任何例子,当我试图想象一个时,我的白带正则表达式只是窒息.
有谁可以描述一些示例用例?
这是一个\G创造性地使用和负面观察的例子:
regex.match(r'\b\w+\b(?:\s(\w+\b)(?<!\G.*\b\1\b.*\b\1\b))*', words)
Run Code Online (Sandbox Code Playgroud)
words例如,应该是由单个空格分隔的一串字母数字字符"a b c d e a b b c d".
该模式将匹配一系列独特的单词.
\w+ - 匹配第一个单词.(?:\s(\w+\b) )* - 匹配其他单词......(?<!\G.*\b\1\b.*\b\1\b)- ...但是对于添加的每个新单词,检查它是否已经出现,直到我们到达\G.在模式结尾处的限制\G可以在当前匹配上断言另一个条件,否则这是不可能的.基本上,模式是在正则表达式中使用AND逻辑的前瞻的变体,但不限于整个字符串.
这是.Net中的一个工作示例,它具有相同的功能.
尝试在Python 2中使用相同的模式findall和regex模块给我一个分段错误,但match似乎工作.
| 归档时间: |
|
| 查看次数: |
305 次 |
| 最近记录: |