1

我正在为我的代码解析器制作正则表达式。我需要识别字符串文字,我做了这个正则表达式:

"([^"]|(\\"))+"?

我需要匹配这些情况:

"Some String
"another string \" string
"blah blah \" blah "

而这些不是:

"Some String"a
"blah blah \" blah "b

它必须以

之后应该有任何字符,除了

如果有另一个"它必须在最后,或者必须用\转义

我的正则表达式不起作用:(我在:http ://gskinner.com/RegExr/ 测试过如果我有这种情况:

"asdasdsd\"sadasd

它只选择:

"asdasdsd\"

为什么?

非常感谢!:)

4

2 回答 2

0

您需要反转 or 操作...这里是在 python 中

>>> print re.search(r'"(\\"|[^"])+','"asdasdsd\\"sadasd').group(0)
"asdasdsd\"sadasd

原因是,首先有 [^"] 会吸收你的反斜杠,然后在遇到引号时失败

这个

"([^"]|(\\"))+"?

变成

"(\\"|[^"])+"?

*注意:我不知道您是否需要“?” 因为您没有指定语言。上面的 python 实现应该有望为您提供所需的东西。

于 2013-04-17T20:32:48.090 回答
0

你必须使用正则表达式吗?

如果您只是在您选择的语言中使用标准字符串解析工具,您的案例似乎会更简单、更清晰。

于 2013-04-17T20:28:05.587 回答