作者adrianshum (Alien)
看板RegExp
标题Re: [问题] 关於regular expression
时间Fri Oct 5 18:10:41 2007
※ 引述《willhunting (这些年来)》之铭言:
: ※ [本文转录自 perl 看板]
: 作者: willhunting (这些年来) 看板: perl
: 标题: [问题] 关於regular expression
: 时间: Thu Oct 4 04:26:21 2007
: Hi!各位先进,我是perl的新手,现在在处理字串上遇到了一点麻烦想来
: 这里跟各位讨教。是这样的,我目前要对使用者输入的搜寻字串作一些
: 判别,规则是这样的:
: 1. cat : 使用者要找cat这个字
: 2. "cat dog" : 使用者要找cat dog,一定要连在一起
: 3. !pig : 使用者要找不含pig的
: 4. !"pig duck" : 使用者要找不含连在一起的"pig duck"
: 因为上述所有组合可能在一个command里面包含,所以我要个别进行判别
: 再作处理,所以我对四种状况的判读是这样写的
: 1. /^[^!]\S+/
: 2. /^"(\S+\s*)+"$/
: 3. /^![^"]\S+/
: 4. /^!"(\S+\s*)+"/ <= 出问题了
: 1-3都没有问题,但第4个,也就是处理!"pig duck"这样子的情况时,如果中间
: 有空格,perl会以规则1去抓出duck"来,但如果中间不放空格,也就是如果把
: 输入改成!"pigduck"的话就没问题,请问该用什麽样的regex来写比较好呢?
: 谢谢!!
不熟 Perl
你的意思是想靠 regex 来判定究竟输入的格式
是四种中的哪一种是吗?
但如果你输入 !"pig duck", 理应不会 match 第一
个 regex 呀, 因为 start of line 後面就是 ! 了
另, 第四个有需要那麽复杂嘛? 反正是
以 ! 开头, 然後 " , 然後至少一个 non-space char, 再 "
那麽
/^!"\S.*"$
不就好了?
Alien
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 202.22.246.26
※ 编辑: adrianshum 来自: 202.22.246.26 (10/05 18:11)