我有一个目标字符串,例如:
"addr: line1
line2
tel:12345678"
注意:在第2行和电话之间,可能有1条或多条新行:\ r \ n或\ r \ n \ r \ n或更多。 我想得到的结果如下:
"addr: line1
line2"
第2行下没有\ r \ n。
我的问题是:
1)如果我使用
/ addr [\ s \ S] +(?=(\ r \ n)+ tel)/
,我将获得不带tel的地址,但是我无法摆脱“ line2”下的“ \ r \ n”,我该怎么办?
2)我知道[\ s \ S]代表包括\ r,\ n的任何字符,并且(。| \ n | \ r)也可以做到这一点。 但是为什么[。\ n]不能呢?就像[\ s \ S]的语法一样吗?
非常感谢您!
答案 0 :(得分:0)
您需要将第一个“ +”设为非贪婪,以使其与“ tel”之前的整个空格不匹配
var regex = new Regex(@"addr.+?(?=\s+tel)", RegexOptions.Singleline);
var result = regex.Match(text).Value;