正则求解
北大街|
西大街---中央广场---东大街
|
南大街 如上,把这5个地名抓下来怎么写
[ 本帖最后由 killunix 于 2010-7-15 11:12 AM 编辑 ] 不知道换行是不是\n,如果是的话,用下面这个正则匹配
\s*(\S*)\s*\\n\s*([^\s-]*)-{3}([^\s-]*)-{3}(\S*)\s*\\n\s*(\S*)\s*\\n
$1~$5顺序代表这五个地名 Mush太强大了,我找到答案了。文若你看看:
<triggers>
<trigger
enabled="y"
group="Multi Line"
lines_to_match="5"
keep_evaluating="y"
match=" 北大街 \n | \n 西大街\-\-\-中央广场\-\-\-东大街 \n | \n 南大街 \Z"
multi_line="y"
regexp="y"
sequence="100"
>
<send>laugh</send>
</trigger>
</triggers>
效果:
北大街
|
西大街---中央广场---东大街
|
南大街
laugh
中央广场 -
这里是城市的正中心,一个很宽阔的广场,铺着青石地面。一些游手好闲的
人在这里溜溜达达,经常有艺人在这里表演。中央有一棵大榕树,盘根错节,据
传已有千年的树龄,是这座城市的历史见证。树干底部有一个很大的洞(shudong)。
你可以看到北边有来自各地的行人来来往往,南面人声鼎沸,一派繁华景象,东
边不时地传来朗朗的读书声,西边则见不到几个行人,一片肃静。
「盛夏」: 太阳正高挂在东方的天空中。
你可以看看(look):shudong,baoku
这里明显的出口是 up、west、south、east、down 和 north。
侠客行江湖风云录(Board) [ 197 张留言,197 张未读 ]
新手礼品树(Gift tree)
>
你捧住肚子,嘻嘻哈哈地直笑得两眼翻白,喘不过气来。 用以下正则:
enabled="y"
lines_to_match="5"
match="\s*(\S*)\s*\n\s+|\s+\s*([^\s-]*)-{1,}([^\s-]*)-{1,}(\S*)\s*\n\s+|\s+\n\s*(\S*)\s*"
multi_line="y"
regexp="y"
send_to="12"
sequence="100"
>
Note("%1")
Note("%2")
Note("%3")
Note("%4")
Note("%5")
输出地结果会被打印两编,奇怪啊。
[ 本帖最后由 killunix 于 2010-7-26 03:17 PM 编辑 ] 不是打印了两遍,是触发了两次。
一次是“|”被触发一次,这次是不包括“宠物店”地名的;
第二次是“宠物店”又触发了一次。
正则没完善好的问题。 我选择匹配5行,怎么会重复触发呢?
[ 本帖最后由 killunix 于 2010-7-26 04:12 PM 编辑 ] 用我这个:
<triggers>
<trigger
enabled="y"
group="Multi Line"
lines_to_match="5"
keep_evaluating="y"
match="\s+(\S*)\s+\n\s+|\s+\n\s+(\S*)\-\-\-(\S*)\-\-\-(\S*)\s+\n\s+|\s+\n\s+(\S*)\s+\Z"
multi_line="y"
regexp="y"
send_to="12"
sequence="100"
>
<send>Note("%1")
Note("%2")
Note("%3")
Note("%4")
Note("%5")</send>
</trigger>
</triggers>
效果:
荣昌交易行
|
东大街----东大街----东门
|
宠物店
荣昌交易行
东大街-
东大街-
东门
宠物店
药铺
|
东大街----东大街----东大街
|
打铁铺
药铺
东大街-
东大街-
东大街
打铁铺 细节方面你再修改一下就好了。
礼品店
|
贵妃浴场--花园别墅区--南大街
|
驿站
没认出来。
应该\-\-\-这里再修改一下。 搞定,原来后面要用\Z
[ 本帖最后由 killunix 于 2010-7-26 04:26 PM 编辑 ] 原帖由 killunix 于 2010-7-26 16:17 发表 http://pkuxkx.net/forum/images/common/back.gif
东大街后面那个“-”能否去掉?还有有的地图上的"---"是三个,有的是四个,怎么改
这是个有点复杂的问题,为了解决这种中文地名和普通字符相混的问题,我曾花了一个多月的时间去思考。
<triggers>
<trigger
enabled="y"
group="Multi Line"
lines_to_match="5"
keep_evaluating="y"
match="\s+([^>;:+-.,]{1,16})\s+\n\s+|\s+\n\s+([^>;:+-.,]{1,16})\-+([^>;:+-.,]{1,16})\-+([^>;:+-.,]{1,16})\s+\n\s+|\s+\n\s+([^>;:+-.,]{1,16})\s+\Z"
multi_line="y"
regexp="y"
send_to="12"
sequence="100"
>
<send>Note("%1")
Note("%2")
Note("%3")
Note("%4")
Note("%5")</send>
</trigger>
</triggers>
这个应该没太大问题了。
荣昌交易行
|
东大街----东大街----东门
|
宠物店
荣昌交易行
东大街
东大街
东门
宠物店
礼品店
|
贵妃浴场--花园别墅区--南大街
|
驿站
礼品店
贵妃浴场
花园别墅区
南大街
驿站
页:
[1]
2