17

次のテキストがあり、「数字の始まり」と「数字の終わり」の間のテキストを抽出したいとします。動的な量の行があり、それらの数字が変化するのは1番目、2番目などだけです。 。データを抽出する各ファイルには、「数字の開始」と「数字の終わり」の間の行数が異なります。「数字の始まり」と「数字の終わり」の間のファイルに何行あるかわからないまま、「数字の始まり」と「数字の終わり」の間の内容に一致する正規表現を作成するにはどうすればよいですか?

よろしく!

This is the first line This is the second line

Start of numbers

This is the first line
This is the second line
This is the third line
This is the ...... line
This is the ninth line

End of numbers
4

4 に答える 4

34

任意の文字(以外の文字ではない)に一致SingleLineするC#正規表現を通知するモードを使用する必要があります。.\n

var regex = new Regex("Start of numbers(.*)End of numbers",
                  RegexOptions.IgnoreCase | RegexOptions.Singleline);
于 2012-04-24T05:37:58.783 に答える
3

複数行の文字列を問題なく一致させることができるはずです。\n(新しい行の場合)に適切な文字を追加することを忘れないでください。

string pattern = "Start of numbers(.|\n)*End of numbers";
Match m = Regex.Matches(input, pattern);

非表示の文字を使用して文字列を考えることができれば、これは簡単です。

Start of numbers\n\nThis is the first line\nThis is the second line\n ...
于 2012-04-24T05:30:29.507 に答える
0

このようなもの:

^(開始)([\ s \ n \ d \ w] *)(終了)$

2番目のグループを取得する場所。必要に応じて、グループに名前を付けることもできます。つまり、重要なのは、すべてを1つの文字列で読み取り、それから正規表現の結果を取得することです。

編集:

少し編集する必要があります。一致がどこかの真ん中にある可能性がある場合は、開始(^)文字と終了($)文字を削除します。(開始)([\ s \ n \ d \ w] *)(終了)

そして、これはあなたが取得したい行だけを残すことに注意してください。次に、これらの行を処理します。

于 2012-04-24T05:41:51.600 に答える
0
/(?<=Start of numbers).*(?=End of numbers)/s

dotallフラグを有効にする必要があります。

http://regexr.com?30oaj

于 2012-04-24T05:54:04.007 に答える