python-3.x - 使用带有或运算符的否定后向查找(前面没有多个单词)
问题描述
我在 Python 中的正则表达式有问题。
et
仅当它前面没有m
or时才可能匹配mme
字符串:M et Mme Du Pont
或Mme et M Du Pont
正则表达式:'\b(?<!m|mme)\bet\b'
错误:look-behind requires fixed-with patterd
我怎样才能解决这个问题?
'\b(?<!m)(?<!mme)\bet\b'
似乎也不起作用
解决方案
除了错误之外,示例数据中还有一个空格,m
并且mme
在模式中缺少该空格。
另一种选择是使用正则表达式 PyPi 模块和一个后向断言,断言左边的内容是m
,可选地后跟me
一个空格。
\b(?<!m(?:me)? )et\b
例如
import regex
pattern = r"\b(?<!m(?:me)? )et\b"
s = ("M et Mme Du Pont or Mme et M Du Pont\n"
"et\n"
"met")
print(regex.findall(pattern, s, regex.IGNORECASE))
输出
['et']
推荐阅读
- reactjs - Uncaught (in promise) TypeError: Server.getSecurePhrase is not a function
- swift - 在 Swift 中覆盖 UICollectionView 函数
- r - groupCheckboxInput 的组标题
- c# - .NET C# 我想从一个数据中获取 ID(1/多个),如果它是另一个表的 ID
- c - 加载或洗牌一对带有 SIMD 内在函数的浮点数以进行双打?
- c - 将参数从我的 bash 脚本传递到 ac 程序
- javascript - 我该如何做到,所以我使用谷歌表格 ID 代替?
- spring-boot - 我想将本机 mongo 查询转换为 spring boot mongo 存储库查询
- c - 比较 c 语言中的 2 个月名称字符串,例如 feb>jan
- view - 在 Html.RadioButtonFor 中设置默认选中的单选按钮