gpt4 book ai didi

regex - 如何匹配不包含单词的行

转载 作者:行者123 更新时间:2023-12-03 05:13:26 25 4
gpt4 key购买 nike

我想知道如何使用Python风格的正则表达式来匹配不包含特定单词的行(只需使用正则表达式,不涉及Python函数)?

示例:

PART ONE OVERVIEW 1 
Chapter 1 Introduction 3

我想匹配不包含“PART”一词的行?

最佳答案

这应该有效:

/^((?!PART).)*$/

编辑(根据请求):工作原理

(?!...) 语法是 negative lookahead ,我一直觉得很难解释。基本上,这意味着“这一点后面的任何内容都不能与正则表达式 /PART/ 匹配。” 我链接的网站对此的解释比我更好,但我会尝试分解这个:

^         #Start matching from the beginning of the string.    
(?!PART) #This position must not be followed by the string "PART".
. #Matches any character except line breaks (it will include those in single-line mode).
$ #Match all the way until the end of the string.

((?!xxx).)* 习惯用法可能是最难理解的。正如我们所看到的,(?!PART) 查看前面的字符串,并表示接下来的任何内容都无法与子模式 /PART/ 匹配。因此,我们对 ((?!xxx).)* 所做的就是逐个字母地遍历字符串并将规则应用于所有字符串。每个字符可以是任何字符,但如果您采用该字符及其后面的几个字符,则最好不要得到单词PART

^$ anchor 要求将规则从头到尾应用于整个字符串。如果没有这些 anchor ,任何不以 PART 开头的字符串片段都将是匹配项。甚至 PART 本身也会有匹配项,因为(例如)字母 A 后面没有精确的字符串 PART

由于我们确实有 ^$,如果 PART 位于字符串中的任何位置,则其中一个字符将匹配 ( ?=PART). 并且整体匹配将失败。希望这足够清楚,对您有所帮助。

关于regex - 如何匹配不包含单词的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6259443/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com