Python 正则表达式 在单词前停止

标签 python regex

我有一些正则表达式,我想弄清楚:( of [A-Za-z ]+)?

我的正则表达式的上述部分将匹配以下内容:

of New Mexico and Mrs Smith.

我想做的是让正则表达式在 之前停止。

( [A-Za-z ]+)\sand?

上面的正则表达式非常接近解决问题,但它仍然匹配 and。

以上匹配:

of New Mexico and

我希望它输出:

of New Mexico

最佳答案

您可以使用 tempered greedy token :

( of (?:(?!\band\b)[A-Za-z ])+)?
     ^^^^^^^^^^^^^^^^^^^^^^^^^

请参阅regex demo

(?:(?!\band\b)[A-Za-z ])+ 结构匹配 [A-Za-z ]< 中定义的 1+ 个字符 不是整个单词 的字符类。

Python demo :

import re
p = re.compile(r'( of (?:(?!\band\b)[A-Za-z ])+)?')
s = " of New Mexico and Mrs Smith."
m = p.search(s)
if m:
    print(m.group().strip())

关于Python 正则表达式 在单词前停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36599494/

相关文章:

python - 为什么这个 flask-admin 表单总是验证失败?

python - 为什么我必须将可调用对象传递给 re.sub 以生成大写字符串?

c# - 正则表达式 包含在 XML 元素中

python - 从 xlwings 返回值到 vba

python - 有效地在循环中使用 matplotlib 的箭袋

python - 解析字符串并分配给同一个变量?

python - 将图标移动到 QCheckBox 中文本的右侧

java - 将 java 字符串转换为与 replaceAll 中的正则表达式兼容的字符串

php - 基于输入的正则表达式创建

Javascript 正则表达式,删除除 s 之前的所有单引号外的所有单引号时出错