问题:
忘记下面的所有内容一秒钟,因为我的细节似乎让人感到困惑(或者这真的很复杂)。
我希望与正则表达式匹配“除了此(任何)捕获组匹配的所有内容”。
我尝试了什么:
I saw this question,但答案和问题都是在谈论一种情况而没有实际解释语法如何/为什么有效,所以我无法弄明白。
我用?!
查看了“负向前瞻”,但并不真正了解这是如何实现我想要做的。
我正在尝试匹配除捕获组之外的所有内容,例如("[a-z]*",)
。
例如,在这个多行列表中:
"buckeye",
"buckeye"
,
."
,"
"fbfdb
"feve,
如何选择捕获组以外的所有内容(在我的情况下应该与"buckeye",
或任何"
+任何数字字符+ ",
匹配)与正则表达式?
需要这个的原因是因为我有一个包含大量条目的文件,例如:
"aidman",
"aidmen",
"aids",
"aiglet",
"aiglets",
"aigret",
"aigrets",
"aigrette",
"aigrettes",
"aiguille",
"aiguilles",
"aikido",
我用我的文本编辑器对它进行了一些替换以改变格式,但是在100,000行中有20个(一个bug)发生了一堆随机的事情。所以我需要找到格式不正确的行。
澄清:
我对这个问题的目标只是了解如何说“我想匹配除此捕获组之外的所有内容”。
答案 0 :(得分:1)
您可以使用PCRE动词(*SKIP)(*F)
,
"[^"]*",(*SKIP)(*F)|.+
上述正则表达式将跳过所有"...",
字符串并匹配其余行。
或强>
通过否定先行断言,
^(?!.*"[^"]*",).*$
(?!.*"[^"]*",)
否定前瞻断言在该特定行中没有类似"...",
的字符串。如果是,则匹配相应的行。正则表达式中的轮廓用于条件检查目的。它不会消耗任何字符,但会断言匹配是否会发生。
^ 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
答案 1 :(得分:0)
因此,您希望在文件中找到错误,其中正确的行格式为"[a-z]*",
。虽然我不能说在正则表达式中如何做到这一点我可以说我将如何实现这一目标。我会在几个步骤中使用Notepad ++:
"[a-z]*",
。