Python 正则表达式 : how to excluding superstrings?

标签 python regex

我想找到所有出现的“not”,但不包括“not good”或“not bad”这两个词。

比如“not not good,not bad,不是我的”会匹配第一个和最后一个“not”。

我如何使用 python 中的 re 包实现它?

最佳答案

使用否定的先行断言:

\bnot\b(?!\s+(?:good|bad))

这将匹配 not,除非 goodbad 紧跟在字符串中的 not 之后.我添加了单词边界 \b 以确保我们匹配单词 not,而不是 nothing 中的 not


\b 是字边界。它检查前面的字符是单词字符而后面的字符不是,反之亦然。单词字符通常是英文字母(a-z、A-Z)、数字 (0-9)、和下划线 (_),但根据正则表达式的风格,可以有更多字符。

(?!pattern) 是零宽度负先行的语法 - 它将检查从当前点开始,它找不到前面指定的 pattern输入字符串。

\s 表示空白字符(空格 (ASCII 32)、换行 \n、制表符 \t 等 - 检查文档以获取更多信息)。如果不想这么随意匹配,把\s换成(空格)即可。

\s+ 中的+ 匹配前面标记的一个或多个实例,在这种情况下,它是空白字符。

(?:pattern) 是非捕获组。不需要捕获 goodbad,所以为了性能我指定了。

关于Python 正则表达式 : how to excluding superstrings?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14064465/

相关文章:

regex - 正则表达式类型之间的差异

c++ - C++ 中的正则表达式和双反斜杠

php - 解析 SQL 结构的正则表达式

Python 3 正则表达式问题

python - 在 Python-Scrapy 中执行 Js 的 Selenium 替代品是什么?

python - HTTP/1.1 400 错误请求。命令部分数量错误

javascript - 排除文件名的正则表达式

c# - 如何在 C# 中匹配和捕获正则表达式

python - pjsua : unable to import pjsua python module

python - 如何按 x 行读取文本文件,但 x 未知?