我希望在word1和第一次出现的word2之间匹配文本。考虑到文本可能包含换行符,最好的方法是什么?有这样的模式:(word1)(不是word2)*(word2)?
答案 0 :(得分:3)
答案 1 :(得分: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:
...使正则表达式引擎将输入字符串视为一样 它由一条线组成。它通过改变行为来做到这一点 句点(。)语言元素,以便匹配每个字符, 而不是匹配除换行符之外的每个字符 \ n或\ u000A。