python - 在 python 中使用正则表达式断言

标签 python regex

我正在试验正则表达式,我已经阅读了一些关于断言的内容并看到了示例,但由于某种原因我无法让它工作。我正在尝试使用后视模式在以下模式之后得到这个词。

import re
s = '123abc456someword 0001abde19999anotherword'
re.findall(r'(?<=\d+[a-z]+\d+)[a-z]+', s, re.I)

结果应该是somewordanotherword

但我得到错误:后视需要固定宽度的模式

感谢任何帮助。

最佳答案

Python 的 re 模块仅允许使用后视的固定长度 字符串。如果您想试验并能够在正则表达式中使用可变长度的后视,请使用替代的 regex 模块:

>>> import regex
>>> s = '123abc456someword 0001abde19999anotherword'
>>> regex.findall(r'(?i)(?<=\d+[a-z]+\d+)[a-z]+', s)
['someword', 'anotherword']

或者简单地避免使用一般的后视并使用捕获组 ( ):

>>> import re
>>> s = '123abc456someword 0001abde19999anotherword'
>>> re.findall(r'\d+[a-z]+\d+([a-z]+)', s, re.I)
['someword', 'anotherword']

关于python - 在 python 中使用正则表达式断言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24726801/

相关文章:

php - Yii:路由的 URL 模式不是有效的正则表达式

regex - 带后缀的可选命名捕获组

python - python3中的operator.idiv在哪里?

php - 使用代码接收从链接中仅提取数字

java - 正则表达式查找所有条件语句

python - 在列表中使用 re.sub() 替换字符后的数字

python - 运行 WSGI 应用程序时出错,ModuleNotFoundError : No module named 'mysite'

python - spine - 从复杂类型继承且派生类实现 xml 属性时出错

Python Tkinter 更改某些文本范围的文本背景

python - 分发、epydoc 和 setup.py