正则表达式里用“A.*?B”可以匹配A和B之间最短的字符串,可是字符串里如果中间有换行符就不能匹配了,怎么

正则表达式里用“A.*?B”可以匹配A和B之间最短的字符串,可是同样的字符里如果中间有换行符了,就不能被匹配了。所以请问如何修改表达式,让它可以无视回车键的存在呢?
一楼三楼四楼的方法试过了,都不能被匹配,不过我将一楼的A(.|\s)*?B改成了A(.|\n)*?B,就可以匹配了。不过奇怪的是在EmEditor里,匹配到的字符,在同一行的字符串显示高亮了,中间有换行的字符串却不能被高亮。虽然不被高亮,但我试过全部替换功能了,确实是被表达式匹配了。

第1个回答  2011-03-14
.*?是非贪婪的匹配对吧?
\r是回车符也就是换行符。
A(\d.*?|.*?\d|.*?\d.*?)B
不知道结果如何,就是三种可能,分别匹配回车在最短字符串的前边、中间和后边。括号里的就是你需要的,可以这样:
whatyouwant = $1(或者\1)这看用的语言了。
第2个回答  2011-03-14
“."代表所有字符,无论是换行还是空白,不过要使换行起作用,你的作用范围得设置,默认应该只匹配一行。例如C#: 你要加上RegexOptions.Singleline,意思是把整个字符串当成一行,无论中间有没换行都能匹配。
第3个回答  2011-03-14
. 不是“所有字符”,而是“除了回车换行外的所有字符”。通常要表示任意字符,使用[\W\w]和[\D\d]这种。
比如A[\D\d]*?B可以匹配A和B之间最短的字符串。
第4个回答  2011-03-13
A(.|\s)*?B 这样吧本回答被提问者采纳
相似回答