2012-12-20 81 views
1

鏈接我需要在C#中的一些正則表達式幫助尋找非聯動章節正則表達式幫助找到文本並沒有在XML

在此波紋管例如第七章鏈接

但第六章和第二章是沒有關係,我想找到那些沒有鏈接的人(代碼中列出的其他一些情況)。

XML例子:

... 
<p class="text_noindent"><a id="page_47"/>Much of this will 
be explained further in the <a xref="ch007">chapter 7</a>context of the charity fashion 
show described in Chapter 6. Chapters II</p> 
... 

我的代碼,發現這是

Regex.Matches(chk.Replace("(", "").Replace(")", ""), "[^<>/\"]\\s*(figure|table|fig.|tab.|chapters|chapter|chap.|cap.|part|figures|tables|chapters|figs.|tabs.)\\s[0-9]+[^a-zA-Z0-9]", RegexOptions.IgnoreCase); 
Regex.Matches(chk.Replace("(", "").Replace(")", ""), "[^<>/\"]\\s*(figure|table|fig.|tab.|chapters|chapter|chap.|cap.|part|figures|tables|chapters|figs.|tabs.)\\s(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})[^a-zA-Z0-9]", RegexOptions.IgnoreCase); 

但其選擇選項,如 薹1, 刺 穩定 ... 等詞也可以在任何一個建議我最好的解決方案 也

回答

0

一個更好的選擇,選擇整個單詞是環繞圖案\b,這樣

\b(chap|chapter|etc)\s+[0-9]+\b 

這也將排除punctation等等,所以你並不需要排除[^<>"]

0

最有可能您嘗試使用\s*來匹配空格,但visual studio向您顯示錯誤「無法識別的轉義序列」,因此您通過這種方式逃脫了它,這意味着完全不同。嘗試使用[ ]*?或只是空格代替

+0

空間不是問題它的檢測空間我需要匹配在正則表達式中指定的確切單詞與數字和羅馬數字,然後是該單詞。 – Siva

+0

空間是問題,因爲正則表達式將'\\ s'識別爲文字's',而不是空格。 – RoadBump

+0

@ user1761398它可能是發現刺或穩定的原因。你的問題到底是什麼? – VladL

0

當使用正則表達式的工作,你應該使用@這樣的:

String _s = @"\s*"; 

的例子。

我讓你相應地改變你自己的代碼。