找回密码
 加入
搜索
查看: 2286|回复: 7

[AU3基础] 【正则表达式】匹配问题求助{已解决}

  [复制链接]
发表于 2012-1-3 14:00:07 | 显示全部楼层 |阅读模式
本帖最后由 qq271859852 于 2012-1-8 11:37 编辑

\bhi\b.*\bLucy\b     :先是一个单词hi,然后是任意个任意字符(但不能是换行),最后是Lucy这个单词

请问上术表达式为何不能匹配   hiaLucy     
请懂得的朋友问我解达一下。谢谢
发表于 2012-1-3 15:54:42 | 显示全部楼层
原因就在 'hi' 后面接个参数 \b
\b 代表一个单词的结尾, 何为单词?
hi  a Lucy里 hi, a, Lucy都是单词,但你举的例子里, 只有 hiaLucy 这个单词!
单词是一个整体!

评分

参与人数 1金钱 +20 收起 理由
afan + 20

查看全部评分

发表于 2012-1-3 18:27:45 | 显示全部楼层
[hi].*[lucy]
这样不好吗
发表于 2012-1-4 15:12:48 | 显示全部楼层
\b 是单词边界的限制,hiaLucy 是个整体...被识别为一个单词了..
而你的表达式中设置的是两个单词,所以不能匹配,建议LZ查一下正则的帮助文档...
发表于 2012-1-4 15:38:58 | 显示全部楼层
本帖最后由 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”等价于[a-zA-Z0-9_] ;

在支持Unicode的语言中,如.NET,默认情况下,“\w”除可以匹配[a-zA-Z0-9_]外,还可以匹配一些Unicode字符集,如汉字,全角数字等等。

几乎所有常见的语言都遵循这样一个规律,只有Java是个例外。在Java中,“\w”的表现是比较奇怪的,Java是支持Unicode的,但Java的正则中的“\w”却是等价于[a-zA-Z0-9_]的。
发表于 2012-1-4 15:42:03 | 显示全部楼层
我发现有正则等字出现的帖子afan必定出现!
 楼主| 发表于 2012-1-8 11:35:41 | 显示全部楼层
回复 5# Ycxw2008


    明白了,谢谢
 楼主| 发表于 2012-1-8 11:36:21 | 显示全部楼层
回复 2# user3000


    懂得什么是单词了,谢谢。我对AU3帮助文档里的对"\b"的描述不是很明白才产生这样的误区
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-10-1 01:31 , Processed in 0.084508 second(s), 22 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表