我正在try 为恰好在负前视之前出现的角色指定一个非贪婪运算符.然而,当我指定非贪婪操作符时,即使在字符串中出现了否定先行中出现的模式,单词也会被捕获.

这个例子是here

pattern = "\bcuerpos?(?!\W*de\sseguridad)"

strings = ["el cuerpo", "cuerpo a cuerpo", 
           "fuerzas y cuerpos de seguridad", "fuerzas y cuerpo de seguridad"]

我希望这个模式与第三个或第四个字符串不匹配,但它确实捕获了第三个字符串.为什么非贪婪的操作符清除了这里的负向先行功能,您将如何解决这个问题?

推荐答案

你需要将s?移到负值前视中才能实现:

\bcuerpo(?!s?\W+de\sseguridad)

Updated RegEx Demo

或者,如果您也想匹配可选的s,则使用:

\bcuerpo(?!s?\W+de\sseguridad)s?

RegEx Demo 2

Python相关问答推荐

点到面的Y距离

将特定列信息移动到当前行下的新行

如何从具有不同len的列表字典中创建摘要表?

如何在Python中并行化以下搜索?

在Mac上安装ipython

try 将一行连接到Tensorflow中的矩阵

Python—从np.array中 Select 复杂的列子集

实现神经网络代码时的TypeError

Pandas Data Wrangling/Dataframe Assignment

如何更改groupby作用域以找到满足掩码条件的第一个值?

使用Openpyxl从Excel中的折线图更改图表样式

Beautifulsoup:遍历一个列表,从a到z,并解析数据,以便将其存储在pdf中.

从嵌套极轴列的列表中删除元素

使用Python TCP套接字发送整数并使用C#接收—接收正确数据时出错

jsonschema日期格式

我什么时候应该使用帆布和标签?

为什么后跟inplace方法的`.rename(Columns={';b';:';b';},Copy=False)`没有更新原始数据帧?

为什么Visual Studio Code说我的代码在使用Pandas concat函数后无法访问?

如何在不不断遇到ChromeDriver版本错误的情况下使用Selify?

Pandas ,快速从词典栏中提取信息到新栏