2011-09-02 49 views
2

問題:
我想使用正則表達式匹配某個xml子字符串(請參閱下面的ex。A)。問題是我無法匹配xml字符串末尾的斜槓,因爲它在Regex中是一個有意義的字符。我甚至試過在我的模型插入斜線前一個反斜槓逃脫斜線(見下面的代碼),但仍然不能使它工作...如何匹配xml字符串末尾的斜線?

問題:
赫克我如何使.NET正則表達式在xml字符串的末尾匹配斜槓?需要你的一些代碼忍者來幫助我。在此先感謝您的幫助,我的朋友。

的輸入:

<SummarySection id="_470"> 
    <Title>Statistics</Title> 
    <Para id="_331"> Note: Estimated new cases in the United States in 2010:<Reference refidx="1"/> </Para> 
</SummarySection> 

守則

// ex A: Pattern need to match (<Reference refidx="1"/>) 

string xnodeptn = @"(<Reference refidx=""[a-zA-Z0-9]""/>)"; 
Regex refregex = new Regex(xnodeptn, RegexOptions.Compiled | RegexOptions.IgnoreCase); 
MatchCollection mymatches = refregex.Matches(xe.ToString()); 
foreach (Match mch in mymatches) 
{ 
... 
} 

string xnodeptn = @"(<Reference refidx=""[a-zA-Z0-9]""\/>)"; 
+1

請不要在您的標題中添加諸如「(.NET Regex)」之類的內容。我們在[so]上使用了標籤。 –

+0

嗯...這是一個很難我的朋友......也許這裏有人真的很聰明可以回答它... – m0rtimer

+0

提供示例輸入。 –

回答

1

@"(<Reference refidx=""[a-zA-Z0-9]""/>)"工程就好! 嘗試運行此:

string text = "<SummarySection id=\"_470\"> <Title>Statistics</Title> <Para id=\"_331\"> Note: Estimated new cases in the United States in 2010: <Reference refidx=\"1\"/> </Para> <ItemizedList id=\"_332\" Style=\"bullet\"> </SummarySection>";   
string xnodeptn = @"(<Reference refidx=""[a-zA-Z0-9]""/>)"; 
Regex refregex = new Regex(xnodeptn, RegexOptions.Compiled | RegexOptions.IgnoreCase); 
MatchCollection mymatches = refregex.Matches(text); 
foreach (Match mch in mymatches) 
{ 
    MessageBox.Show(mch.ToString()); 
} 

它返回示例文本(<Reference refidx=\"1\"/>)的比賽。嘗試尋找其他問題或發佈更多的代碼。

enter image description here

+0

謝謝** Reddog ** – TigOldBitties

+0

謝謝,我確實嘗試過,但它沒有返回任何匹配,mymatches.Count是0! –

+0

也許xe.toString()存在問題...我無法從代碼中得知xe是什麼。任何細節? – TigOldBitties

1

首先,Reddog說, 「/」 是不是在正則表達式特殊字符。如果是這樣,你可以用反斜槓來避開它,但你不需要。

其次,你爲什麼使用正則表達式來處理XML?你真的想要處理<Reference refidx="1"/><Reference refidx="1"></Reference>有什麼不同嗎?如果你這樣做,那麼就會發生一些腥意 - 你沒有使用XML,因爲它被設計爲使用:這兩個構造應該是等價的。

+0

邁克爾,謝謝,是的,它不是特殊字符,但我只是認爲這樣,因爲它沒有工作,我沒有使用正則表達式來處理XML,我使用Linq XML,但我只需要在我的xhtml數據中匹配這個正則表達式。 –

0

其中一個答案是正確的,這是其他的東西導致模式不起作用,在我的XML結束標記之前沒有空格,如下<Reference refidx="1"/>,但我的正則表達式模式期望在結束標記之前匹配一個空格作爲如下:<Reference refidx="1" />不確定爲什麼會這樣,但我的問題已解決。

相關問題