北大侠客行MUD论坛

 找回密码
 注册
搜索
热搜: 新手 wiki 升级
查看: 7379|回复: 10

正则求解

[复制链接]
发表于 2010-7-15 11:10:02 | 显示全部楼层 |阅读模式
  1.            北大街
  2.              |
  3. 西大街---中央广场---东大街
  4.              |
  5.            南大街
复制代码
如上,把这5个地名抓下来怎么写

[ 本帖最后由 killunix 于 2010-7-15 11:12 AM 编辑 ]
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2010-7-15 14:16:35 | 显示全部楼层
不知道换行是不是\n,如果是的话,用下面这个正则匹配
\s*(\S*)\s*\\n\s*([^\s-]*)-{3}([^\s-]*)-{3}(\S*)\s*\\n\s*(\S*)\s*\\n
$1~$5顺序代表这五个地名
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2010-7-26 13:42:53 | 显示全部楼层
Mush太强大了,我找到答案了。文若你看看:


      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"
  >
  laugh
  




效果:
                           北大街              
                             |     
                 西大街---中央广场---东大街   
                             |     
                           南大街              
laugh
中央广场 -
    这里是城市的正中心,一个很宽阔的广场,铺着青石地面。一些游手好闲的   
人在这里溜溜达达,经常有艺人在这里表演。中央有一棵大榕树,盘根错节,据
传已有千年的树龄,是这座城市的历史见证。树干底部有一个很大的洞(shudong)。
你可以看到北边有来自各地的行人来来往往,南面人声鼎沸,一派繁华景象,东   
边不时地传来朗朗的读书声,西边则见不到几个行人,一片肃静。
    「盛夏」: 太阳正高挂在东方的天空中。
    你可以看看(look):shudong,baoku
    这里明显的出口是 up、west、south、east、down 和 north。
    侠客行江湖风云录(Board) [ 197 张留言,197 张未读 ]
    新手礼品树(Gift tree)
>
你捧住肚子,嘻嘻哈哈地直笑得两眼翻白,喘不过气来。
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2010-7-26 15:09:17 | 显示全部楼层
用以下正则:[tr]
[tr]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 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2010-7-26 15:56:11 | 显示全部楼层
不是打印了两遍,是触发了两次。
一次是“|”被触发一次,这次是不包括“宠物店”地名的;
第二次是“宠物店”又触发了一次。
正则没完善好的问题。
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2010-7-26 15:59:54 | 显示全部楼层
我选择匹配5行,怎么会重复触发呢?

[ 本帖最后由 killunix 于 2010-7-26 04:12 PM 编辑 ]
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2010-7-26 16:09:20 | 显示全部楼层
用我这个:

      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"
  >
  Note("%1")
Note("%2")
Note("%3")
Note("%4")
Note("%5")

  




效果:
                         荣昌交易行            
                             |     
                 东大街----东大街----东门      
                             |     
                           宠物店              
荣昌交易行
东大街-
东大街-
东门
宠物店




                            药铺               
                             |     
                 东大街----东大街----东大街   
                             |     
                           打铁铺              
药铺
东大街-
东大街-
东大街
打铁铺
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2010-7-26 16:13:01 | 显示全部楼层
细节方面你再修改一下就好了。
                           礼品店              
                             |     
               贵妃浴场--花园别墅区--南大街   
                             |     
                            驿站               
没认出来。
应该\-\-\-这里再修改一下。
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2010-7-26 16:17:04 | 显示全部楼层
搞定,原来后面要用\Z

[ 本帖最后由 killunix 于 2010-7-26 04:26 PM 编辑 ]
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2010-7-26 16:29:45 | 显示全部楼层
原帖由 killunix 于 2010-7-26 16:17 发表
东大街后面那个“-”能否去掉?还有有的地图上的"---"是三个,有的是四个,怎么改



这是个有点复杂的问题,为了解决这种中文地名和普通字符相混的问题,我曾花了一个多月的时间去思考。


      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"
  >
  Note("%1")
Note("%2")
Note("%3")
Note("%4")
Note("%5")

  


这个应该没太大问题了。

                         荣昌交易行            
                             |     
                 东大街----东大街----东门      
                             |     
                           宠物店              
荣昌交易行      
东大街
东大街
东门     
宠物店   

                           礼品店              
                             |     
               贵妃浴场--花园别墅区--南大街   
                             |     
                            驿站               
礼品店         
贵妃浴场
花园别墅区
南大街   
驿站
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|北大侠客行MUD ( 京ICP备16065414号-1 )

GMT+8, 2024-11-16 07:16 PM , Processed in 0.012305 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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