2012-07-06 106 views
0

問題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>

回答

0

我想通了 - 使用後向引用。

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

正則表達式:

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

和整個片段:

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

可測試上my blog(需要的Silverlight)

+0

它是爲了避免寫的方式'(? [^「] *)'兩次嗎?它可以是一個很長的複雜圖案。 – ca9163d9 2012-07-06 21:26:22

1

看起來這是一個2合1的問題的權利?

我的回答1

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

然後#2

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

ABC | xyz |高清< - 想象這樣

不要忘記修剪空間使用效果

+0

第二個解決方案將匹配' ......'這是沒有很好地形成。 – ca9163d9 2012-07-06 21:28:28

+0

是的,它有點不簡潔(wellformed),但它取決於你的數據將如何來找你。 你可以不喜歡這樣,如果你想, ((*)<\/abc>。)|((*)<\/xyz>。)|((*)<\/def>)。 – fedmich 2012-07-07 16:45:52

0

之前第一問題用途:

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

第二問題:

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

並獲得組名爲內容兩種。