看板 RegExp 關於我們 聯絡資訊
※ 引述《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)