如何使用正则表达式查找带有未闭合引号的字符串

时间:2017-12-24 01:20:41

标签: regex

例如,我的输入是:

你好戴维斯,苏珊说,#34;她不得不跑腿#34;萨拉在那里说,"你需要帮助吗?但我回答说#34;不,我很好。"

我需要找到没有引号的任何字符串。在这里,字符串是你需要任何帮助吗?

2 个答案:

答案 0 :(得分:2)

没有。您可以做的最好的事情是使用单引号匹配行,但这会将多行引号标记为问题。你要求的是需要智能语言解析,这是不可用的。

答案 1 :(得分:1)

正如Khauri McClain所说,这不是完全证据。如果你使用类似的东西:

(\ s [\"] + [a-zA-Z0-9 \,] + [。!\?])+([\ s] {1})

表示示例中的搜索表达式,\ 1 \" \ 2表示替换表达式,它适用于您的示例。我在文本编辑器中粘贴了几行并替换了丢失的\"如下面第2行所示。

<强>代替

你好戴维斯,苏珊说,#34;她不得不跑腿#34;萨拉在那里说'#34;你需要帮助吗?&#34;但我回答说#34;不,我很好。&#34;

你好戴维斯,苏珊说,#34;她不得不跑腿#34;萨拉在那里说'#34;你需要帮助吗?&#34;但我回答说#34;不,我很好。&#34;

未替换

你好戴维斯,苏珊说,#34;她不得不跑腿#34;萨拉在那里说,&#34;你需要帮助吗?但我回答说#34;不,我很好。&#34;

你真的需要知道标点符号规则,否则这种方法会非常脆弱。

例如,&#34;她必须跑腿#34;。通常应该以......差事结束。&#34;

所以,如果你不小心,你可以把事情弄得一团糟。

修改:我想再添加一件事。我最近对一些文档(15)进行了类似的编辑,但我不得不将问题分解为多次传递。每次通过处理一个替换案例。

如果我有很多文档而且我的生活依赖于准确性,我会编写一个程序来进行编辑。我的最后2美分值。