Re: [問題] 關於regular expression
※ 引述《willhunting (這些年來)》之銘言:
: 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來寫比較好呢?
: 謝謝!!
應該不需要那麼多規則啊 @"@
@exclude = ();
@include = ();
@regex = ('(!?)"([^"]*?)"', '(!?)(\w+)');
$_ = $search_key;
while(1){
$ex = 0;
foreach $regex (@regex){
$ex |= s/$regex//;
if($1 eq '!') { push(@exclude, $2);}
else { push(@include, $2);}
}
last if($ex == 0);
}
==========================================
就只是有 ! 的表示不要的
和有"的表示一個完整的詞而已。
regex 所以只有二組規則嚕。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.231.49.182
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 6 之 6 篇):
Perl 近期熱門文章
PTT數位生活區 即時熱門文章