【正则表达式】匹配问题求助{已解决}
本帖最后由 qq271859852 于 2012-1-8 11:37 编辑\bhi\b.*\bLucy\b :先是一个单词hi,然后是任意个任意字符(但不能是换行),最后是Lucy这个单词
请问上术表达式为何不能匹配 hiaLucy
请懂得的朋友问我解达一下。谢谢 原因就在 'hi' 后面接个参数 \b
\b 代表一个单词的结尾, 何为单词?
hia Lucy里 hi, a, Lucy都是单词,但你举的例子里, 只有 hiaLucy 这个单词!
单词是一个整体! .*这样不好吗 \b 是单词边界的限制,hiaLucy 是个整体...被识别为一个单词了..
而你的表达式中设置的是两个单词,所以不能匹配,建议LZ查一下正则的帮助文档... 本帖最后由 Ycxw2008 于 2012-1-4 15:40 编辑
如果上面楼主还不明白,下面这段应该就好理解点了把
1 概述
“\b”匹配单词边界,不匹配任何字符。
“\b”匹配的只是一个位置,这个位置的一侧是构成单词的字符,另一侧为非单词字符、字符串的开始或结束位置。“\b”是零宽度的。
基本上所有的资料里都会说“\b”是单词边界,但是关于“单词”的范围却是少有提及。通常情况下,正则表达式中所谓的“单词”,就是由“\w”所定义的字符所组成的子串。
“\b”表示所在位置的一侧为单词字符,另一侧为非单词字符、字符串的开始或结束位置,也就相当于
(?<!\w)(?=\w)|(?<=\w)(?!\w)
思考:以下写法为什么不等价于“\b”
(?<=\W)(?=\w)|(?<=\w)(?=\W)
2 \w的范围
即然涉及到“\w”,那就要先考察一下它的范围。
在支持ASCII码的语言中,如JavaScript,“\w”等价于 ;
在支持Unicode的语言中,如.NET,默认情况下,“\w”除可以匹配外,还可以匹配一些Unicode字符集,如汉字,全角数字等等。
几乎所有常见的语言都遵循这样一个规律,只有Java是个例外。在Java中,“\w”的表现是比较奇怪的,Java是支持Unicode的,但Java的正则中的“\w”却是等价于的。 我发现有正则等字出现的帖子afan必定出现! 回复 5# Ycxw2008
明白了,谢谢 回复 2# user3000
懂得什么是单词了,谢谢。我对AU3帮助文档里的对"\b"的描述不是很明白才产生这样的误区
页:
[1]