1

word1とword2の最初の出現の間のテキストを一致させたい。テキストに改行文字が含まれている可能性があることを考えると、これを行うための最良の方法は何ですか?次のようなパターンはありますか:(word1)(word2ではない)*(word2)?

4

2 に答える 2

3

遅延数量詞を使用して、word1とword2の間でできるだけ少ない文字を一致させることができます。

(word1).*?(word2)

MSDNの数量詞のトピックを参照してください。

于 2012-09-30T18:41:49.633 に答える
1

SingleLineオプションを使用してそれらを一致させることができます。

//use '*' or '*?' depending on what you want for "word1 aaa word2 bbb word2"
string pattern = "word1(.*)word2";  
var m = Regex.Match(text1, pattern, RegexOptions.Singleline);
Console.WriteLine(m.Groups[1]);  // the result

SingleLineに関するMSDN:

...正規表現エンジンは、入力文字列を1行で構成されているかのように扱います。これは、改行文字\nまたは\u000Aを除くすべての文字に一致するのではなく、すべての文字に一致するようにピリオド(。)言語要素の動作を変更することによって行われます。

于 2012-09-30T18:54:37.617 に答える