我想判断一下特定的词是否出现在另一个词之前?如果它看起来一定不匹配,如果它看起来不匹配,那么它们之间可以有其他词

以下是示例字符串:My name is Jack Brown

我想判断一下Jack之前是否出现了name个单词,以下是我的正则表达式:

正则表达式:(?<!name)\b(Jack)\b

但不幸的是,只有在他们之间没有任何语言的情况下,它才能起作用,有人能帮忙吗?

推荐答案

你需要否定Jack之前的name.

(?=^(?:(?!name).)*Jack.*$).*

Short Explanation

  • 除了name这个词,什么都行
  • Jack.*个精确的单词Jack和其他可选字符
  • 如果断言为真,则.*匹配整个字符串

Python Example

import re

s1 = "My name is Jack Brown"
s2 = "I am Jack Brown"

def doesMatch(string):
    return bool(re.search(r"(?=^(?:(?!name).)*Jack.*$).*", string))

print(doesMatch(s1))  # False
print(doesMatch(s2))  # True

此外,请参阅regex demo

Python相关问答推荐

使用新的类型语法正确注释ParamSecdecorator (3.12)

NumPy中条件嵌套for循环的向量化

python中字符串的条件替换

改进大型数据集的框架性能

try 检索blob名称列表时出现错误填充错误""

使用Python查找、替换和调整PDF中的图像'

Cython无法识别Numpy类型

以异步方式填充Pandas 数据帧

在用于Python的Bokeh包中设置按钮的样式

如何强制向量中的特定元素在Gekko中处于优化解决方案中

获取PANDA GROUP BY转换中的组的名称

为罕见情况下的回退None值键入

Python OPCUA,modbus通信代码运行3小时后出现RuntimeError

分解polars DataFrame列而不重复其他列值

修改.pdb文件中的值并另存为新的

类型对象';敌人';没有属性';损害';

文本溢出了Kivy的视区

遍历列表列表,然后创建数据帧

如何批量训练样本大小为奇数的神经网络?

将多行数据循环到嵌套框架中的单行