2011-07-24 10 views
0

私はPDFをXMLに解析しようとしていますが、次のような見出しを抽出したいと思います:I.はじめに、II。私のファイルからローマ数字で分類されたページレイアウト。私はこのような文字列に一致する正規表現を書いてみたいが、私はいくつかのことを試したが、うまくいきませんでした。C#でI.textをマッチングするための正規表現

答えて

1

これはあなたが必要なものを行う必要があります。

[IVXLCDM] +。 [A-Z] +

hereを述べたように:

\。ピリオド文字は特殊文字(任意の文字と一致することを意味する)であるため、正規表現の構文でピリオドに一致します。一方

あなたは文字列のみをローマ数字との見出しの名前が含まれていることを確認したい場合、あなたはこれを使用する場合があります

^[IVXLCDM]+\. [A-Z ]+$ 

^$アンカーと呼ばれているが。 ^は正規表現エンジンに文字列の先頭からのマッチングを開始するように指示し、一方$は文字列の最後で一致を停止するように正規表現エンジンに指示します。ローマ数字の 完全なリストは、これは主に動作するはずWikipedia

1

は、ここ+ [IVX] B \シンプルな1

です。 [A-Z] +

1

から入手することができます。

^[IVXLCDM]+\. [^\p{Ll}]+?$ 

これは、数字や記号を含むヘッダと一致しますが、明示的にUnicode小文字を除外します。

また、あなたがそうのように、オプションのRegexOptions.Multilineを使用していることを確認します(inpあなたの入力文字列です)

foreach (var match in 
    Regex.Matches(inp, 
     @"^[IVXLCDM]+\. [^\p{Ll}]+?$", 
     RegexOptions.Multiline)) 
    Console.WriteLine(match.Value); 
関連する問題