gpt4 book ai didi

regex - 如何使用正则表达式选择捕获组以外的所有内容?

转载 作者:行者123 更新时间:2023-12-05 04:16:37 25 4
gpt4 key购买 nike

问题:

暂时忘记下面的所有内容,因为我的细节似乎让人感到困惑(否则这真的很复杂)。

我想用正则表达式匹配“除此(任何)捕获组匹配的内容之外的所有内容”。

我尝试过的:

I saw this question ,但是答案和问题都在谈论一种情况,而没有真正解释语法的工作原理/原因,所以我无法弄清楚。

我用 ?! 查看了“negative-look-ahead”,但并不真正理解它是如何实现我想要做的事情的。

我正在尝试匹配除捕获组之外的所有内容,例如 ("[a-z]*",)

例如,在这个多行列表中:

"buckeye",
"buckeye"
,
."
,"
"fbfdb
"feve,

我如何选择除了捕获组之外的所有内容(在我的例子中应该匹配 "buckeye", 或任何一组 " + 任何 num a-z 字符 + ",) 与正则表达式?


之所以需要这个是因为我有一个包含很多条目的文件,例如:

"aidman",
"aidmen",
"aids",
"aiglet",
"aiglets",
"aigret",
"aigrets",
"aigrette",
"aigrettes",
"aiguille",
"aiguilles",
"aikido",

我用我的文本编辑器在上面运行了一些替换以更改格式,但是 100,000 行中的大约 20 行发生了一堆随机的事情(一个错误)。所以我需要找到格式不正确的行。

澄清:

我对这道题的目标只是理解如何说“我想匹配除了这个捕获组之外的所有东西”。

最佳答案

您可以使用 PCRE 动词 (*SKIP)(*F) ,

"[^"]*",(*SKIP)(*F)|.+

DEMO

上面的正则表达式将跳过所有 "...", 字符串并匹配剩余的行。

通过否定前瞻断言,

^(?!.*"[^"]*",).*$

DEMO

(?!.*"[^"]*",) 负先行断言其中没有像 "...", 这样的字符串特定行。如果是,则相应的行将被匹配。正则表达式中的环视用于条件检查目的。它不会消耗任何字符,但它断言是否会发生匹配。

^                        the beginning of the string
(?! look ahead to see if there is not:
.* any character except \n (0 or more
times)
" '"'
[^"]* any character except: '"' (0 or more
times)
", '",'
) end of look-ahead
.* any character except \n (0 or more times)
$ before an optional \n, and the end of the
string

关于regex - 如何使用正则表达式选择捕获组以外的所有内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26685617/

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