1

リンクされていないチャプターを見つけるc#で正規表現のヘルプが必要です

この以下の例では、第7章はリンクされていますが、第6章と第II章はリンクされていません。リンクされていない人を見つけたいと思います(コードにリストされている他のいくつかのケース)。

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、スタブステーブル...などの選択オプションは、誰もが私に最良の解決策を提案することもできます

4

3 に答える 3

0

を使用して空白を一致させようとしている可能性がありますが\s*、Visual Studioで「認識されないエスケープシーケンス」というエラーが表示されるため、この方法\\s*でエスケープしました。これはまったく異なる意味です。[ ]*?代わりに空白を使用してみてください

于 2012-12-20T12:35:39.553 に答える
0

正規表現を使用する場合は、次のように@を使用する必要があります。

String _s = @"\s*";

例として。

それに応じて独自のコードを変更させてください。

于 2012-12-20T12:41:07.613 に答える
0

単語全体を選択するためのより良いオプションは\b、次のようにパターンをで囲むことです。

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

これにより、パンクなども除外されるため、を除外する必要はありません[^<>"]

于 2012-12-20T13:38:07.843 に答える