如何在引号中提取字符串(双引号或单引号)

时间:2012-07-06 20:28:28

标签: c# regex

问题1:

例如,

     ... "ab'cd" ... 'ab"cd' ...

它应分别获得ab'cdab"cd。可能有很多带引号的字符串。


问题2:

如何从以下字符串中提取text <td>...</td> text

<abc>text <td>...</td> text</abc>
<xyz>text <td>...</td> text</xyz>
<def>text <td>...</td> text</def>

abc,def,xyz可以嵌套在<td>

4 个答案:

答案 0 :(得分:2)

正则表达式:

(?:"(?<text>[^"]*)")|(?:'(?<text>[^']*)')

以及整个片段:

Regex regex = new Regex(
@"(?:""(?<text>[^""]*)"")|(?:'(?<text>[^']*)')",
RegexOptions.None
);

my blog上的可测试(需要silverlight)

答案 1 :(得分:1)

看起来这是一个二合一问题吗?

我对1的回答是

((.*)['"](.*))

然后是#2

<(abc|xyz|def)>(.*)<\/(abc|xyz|def)>

abc | xyz | def&lt; - 想象它就像这样

在使用结果之前不要忘记修剪空格

答案 2 :(得分:0)

第一次问题使用:

("(?<content>[^"]*)")|('(?<content>[^']*)')

第二次问题:

>(?<content>\w*\s*<td>.*</td>[\w\s]*)<

并为两者获取名为 content 的组。

答案 3 :(得分:0)

我想通了 - 使用后退参考。

(["'])(?<q>.+?)\1