从报价中提取数据?

时间:2008-10-16 19:19:42

标签: c# regex

我正在寻找一个正则表达式,它可以拉出字符串中的引用部分,包括单引号和双引号。

IE:

"This is 'an example', \"of an input string\""

匹配

  • 一个例子
  • 的输入字符串

我写了这个:

 [\"|'][A-Za-z0-9\\W]+[\"|']

它有效,但是有人看到它有任何缺陷吗?

编辑:我看到的主要问题是它无法处理嵌套引号。

5 个答案:

答案 0 :(得分:3)

它如何处理双引号内的单引号(反之亦然)?

"This is 'an example', \"of 'quotes within quotes'\""

应匹配

  • 一个例子
  • '引号内的引号'

如果您需要支持,请使用反向引用。

(\"|')[A-Za-z0-9\\W]+?\1

编辑:修复使用不情愿的量词。

答案 1 :(得分:1)

喜欢那个?

"([\"'])(.*?)\1"

您想要的匹配将在子组2中,以及第一组中的引用类型。

你的正则表达式中的缺陷是1)贪婪的“+”和2)[A-Za-z0-9]真的不匹配很多。很多角色都不在这个范围内。

答案 2 :(得分:0)

它有效但与引号中的其他字符不匹配(例如,非字母数字,如二进制或外语字符)。怎么样:

[\"']([^\"']*)[\"']

我的C#正则表达式有点生疏,所以如果不完全正确的话,请继续关注:)

答案 3 :(得分:0)

@"(\"|')(.*?)\1"

答案 4 :(得分:0)

你可能已经拥有其中一个,但是,如果没有,这里是一个免费的开源工具,我一直用它来测试我的正则表达式。我通常对表达式应该是什么样子有一般的想法,但需要弄清楚一些细节。

http://renschler.net/RegexBuilder/