求教正则表示式中(),[]使用的区别
本帖最后由 popmud 于 2015-5-10 12:15 PM 编辑求教正则表示式中(),[]使用的区别,另外和*的配合使用!
在做查看技能触法器的时候,│ 基本轻功 (dodge) - 一鳞半爪30/ 0│
代码见下面
^(>)*│(□| )*(\\S+)\\s+\\((\\S+)\\)\\s+\\-\\s+\\S+\\s+(\\d+)\\/\\s+\\d+│
正真取变量时,w才是“基本轻功”,w才是dodge,
如果将()改为[]时,代码如下:
^[>]*│[□| ]*(\\S+)\\s+\\((\\S+)\\)\\s+\\-\\s+\\S+\\s+(\\d+)\\/\\s+\\d+│
正真取变量时,w是“基本轻功”,w是dodge
例如:我要正则匹配“>你用功完毕”
^(>)你用功完毕,是正确,还是^[>]你用功完毕,正确
如果要匹配出现">>你用功完毕"的现象
^(>*)是正确,还是^(>)*正确
或者
^[>*]是正确,还是^[>]*正确
北大侠客行MUD,中国最好的MUD 正则表达式有N种 (perl, python, ruby, sed, awk, grep, ...),每种正则表达式可能稍有差别, 但总体来说差不多, 一般来说, () 表示分组, [] 有两种用法:
1. 表示 a或b中任一个
2. [^ab] 表示非a和b的任何一个其它符号
具体的看看 master regular expression 这本书吧... http://www.jb51.net/tools/zhengze.html
每次写正则必打开,边看边写。。。 我不懂楼上说的......
我只知道,括号仅用在取变量的时候
换句话说,有几个括号,就有几个w[]
[]和()的区别很大,[]很多时候我在乱用,反正用着不出错,只要别把*+?等放在里面就行
比如\\s*,我写[\\s]*貌似也没毛病
当然,比如貌似代表所有小写字母,不过我基本用不到
我经常过不去的时候,就乱加[],不知道什么时候就过去了......
()完全用在取变量的时候......当然\\(\\)除外......
页:
[1]