我正在寻找将在NotePad ++中搜索的正则表达式,以下格式[HERE]
根本不应包含任何双引号:
,"[HERE]",
基本上,我希望在引用字段中找到逗号之间的任何其他引号。
Invalid: ,"hello "there"",
Invalid: ,"hello there"",
Invalid: ,"hell "o there",
Invalid: ,"""""""",
VALID: ,"hello there",
VALID: ,"",
我已经尝试了各种各样的例子,并尝试自己创作,但我无法理解这一点。
我最接近的是:
("[^",]+)"([^",]+")"
但这只会与,"Example" Place"",
等明确示例相匹配,而不会与,"Example",
任何帮助表示赞赏!
答案 0 :(得分:2)
要查找正确平衡的引号,请搜索,"[^"]*",
以查找意外报价,搜索,"[^",]*("[^",]*)+",
。
注意方括号内的逗号用于无效引号。这可能是错的,但如果错了,那么你需要更强的关于逗号存在的规则。
解释有效和无效的正则表达式。使用,"
和",
开始和结束。这涉及问题中显示的[HERE]
文本周围的字符。其余两个正则表达式都处理[HERE]
的内容。有效案例是零个或多个不是引用的字符。这是[^"]
的简单匹配。无效的案例有一个或多个引号,两边都可以有其他非引号字符。 [HERE]
包括xx"xx
和xxx"x"xxxxx"xx"
以及"xx""xx"
的示例无效。所有这些无效案例都可以描述为
在正则表达式中,非引号的字符为[^"]
。零个或多个是[^"]*
。括号中包含一系列事物,序列中的一个或多个是(...)+
或本例("[^"]*)+
。
问题没有说明应如何处理与[HERE]
相关的逗号。这个答案假设不允许这样做。它通过在"而不是引用"中添加逗号来表明这一点。条款,给予[^",]
。
组装我们得到的无效匹配件
," // Opening characters
[^",] // Character that is neither quote nor comma
* // zero or more of them
( // Enclose the sequence
" // a real quote
[^",]* // Zero or more characters that are neither quote nor comma
) // End of the sequence
+ // one or more of the sequence
", // Closing characters
答案 1 :(得分:1)