2016-12-07 243 views
-2

例输入C#正则表达式查找所有双引号的文本

在本政策中的“你”和“你”指的是被保险人在声明中所示的命名 。 “我们”,“我们”和“我们的” 是指提供此保险的公司。 “汽车。”

我想是这样的[\s](\\?")(.*?)\1[\s|\n|\t|\b|,|.]

它是不承认"us""auto."Regex Tester

有可能是其他场景,如

整个政策 “您” 字,“你的“是指在声明中显示的被保险人 。 “我们”,“我们”和“我们的” 指“本公司”提供“本保险”。 “汽车。”

这里是另一个负面的测试情况下,我需要处理,我应该只考虑有效的双引号

TOS”你自己的。这包括那些‘汽车’,你获得的 所有权政策后在这个例子中开始。

我应该能够删除完整"the Company "providing" this insurance"

+0

怎么样'( “*?”)+',在显示[测试仪(http://regexstorm.net/测试仪p =%28%22 *%3F%22%29%2b是I =在整个+这+政策+的+字+%22you%22 +和+%22your%22 + +是指+的+命名+受保人+所示+ IN +的+声明。+的+字+%22we%2C%22 +%22us%22 +和+%22our%22 + +是指+的+公司+提供+这+保险。+%22auto。%22) –

+0

如果将它改为'(\\?“)(。*?)\ 1',那么它似乎工作。目前汽车没有任何”之后“后面的字符和“我们”没有被识别,因为“我们”之后的空间与我们匹配,因此在“我们”中看不到匹配。是否有你需要预先和后期字符的原因? – Chris

+0

@AlfieGoodacre您的表情适用于正面情况,但不适用于负面情况,如嵌套双引号,请参阅我的更新问题,以负面情况 – HaBo

回答

0

如果您有嵌套括号你需要类似解析器的东西。

否则:

string input = "Throughout this policy the words \"you\" and \"your\" refer to the Named Insured shown in the Declarations. The words \"we,\" \"us\" and \"our\" refer to the Company providing this insurance. \"auto.\""; 
string[] result = Regex.Matches(input, "(\".*?\")+").Cast<Match>().Select(x => x.Value).ToArray(); 
0

检查了这一点

(["'])(?:(?=(\\?))\2.)*?\1 
+1

尽管此代码可能有效,但您还应该解释为什么这可行,以及为什么ops正则表达式不起作用。 – BDL

相关问题