问题一:
例如,
... "ab'cd" ...'ab"cd' ...
它应该分别得到ab'cd和ab"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>.
正则表达式:
(?:"(?<text>[^"]*)")|(?:'(?<text>[^']*)')
和整个片段:
Regex regex = new Regex(
@"(?:""(?<text>[^""]*)"")|(?:'(?<text>[^']*)')",
RegexOptions.None
);
可在我的博客上测试(需要 silverlight)
看起来这是一个二合一的问题,对吧?
我对 1 的回答是
((.*)['"](.*))
然后对于#2
<(abc|xyz|def)>(.*)<\/(abc|xyz|def)>
美国广播公司 | xyz | def <- 想象成这样
在使用结果之前不要忘记修剪空格
对于第一个问题使用:
("(?<content>[^"]*)")|('(?<content>[^']*)')
第二个问题:
>(?<content>\w*\s*<td>.*</td>[\w\s]*)<
并为两者获取组命名内容。
我想通了 - 使用反向引用。
(["'])(?<q>.+?)\1