我想找到所有"不"的外观,但不包括"不好"或"不坏"的术语.
例如,"不是不好,不坏,不是我的"将匹配第一个和最后一个"不".
如何在python中使用re包来实现呢?
使用负前瞻断言:
\bnot\b(?!\s+(?:good|bad))
Run Code Online (Sandbox Code Playgroud)
这将匹配not
,除了字符串中的good
和bad
之后的情况not
.我添加了单词边界\b
以确保我们匹配单词not
,而不是not
in nothing
或knot
.
\b
是字边界.它检查前面的字符是否是单词字符,后面的字符不是,反之亦然.单词字符通常是英文字母(az,AZ),数字(0-9)和下划线(_),但根据正则表达式的风格可以有更多.
(?!pattern)
是零宽度负向前瞻的语法 - 它将从当前点检查它,它无法pattern
在输入字符串中找到指定的前置.
\s
表示空白字符(空格(ASCII 32),新行\n
,制表符\t
等 - 请查看文档以获取更多信息).如果你不想这么随意匹配,只需\s
用 (space).
The +
在\s+
匹配前面的令牌的一个或多个实例,在这种情况下,它是空白字符.
(?:pattern)
是非捕获组.有没有需要捕捉good
和bad
,所以我对性能指定如此.