RegEx Pattern匹配字符串

时间:2011-07-03 16:58:59

标签: .net regex pattern-matching

我正在寻找一个匹配字符串的正则表达式模式。一个字符串,定义为引号中的任何内容。我要做的是解析这些字符串:

PRINT "test"
PRINT "Hello":PRINT "World"

我现在的模式是:“\”。* \“”。它解析第一行很好。它返回/“test”/,但是第二行,它返回/“Hello”:PRINT“World”/这是不正确的。它需要匹配第一个引号和第二个引号之间的内容。它似乎匹配整行中第一个引号和最后一个引号之间的任何内容。

任何帮助将不胜感激。如果重要,那就是.NET Regex。

2 个答案:

答案 0 :(得分:5)

"[^"]*"

.*贪婪。它匹配到字符串末尾的权利,因为没有任何东西告诉它停止在"之间的任何一个。 [^"]*也是贪婪的 - 但不是随意的。

或者使用非贪婪匹配

".*?"

另见MSDN on Quantifiers

答案 1 :(得分:2)

你的问题是默认情况下正则表达式是贪婪的,这意味着他们会选择最长的匹配字符串。你的正则表达式的非贪婪版本将是:

"\"[^"]+?\"

我使用+而不是*假设您只想匹配非空字符串。