[問題] 關於regular expression

看板Perl作者 (這些年來)時間16年前 (2007/10/04 04:26), 編輯推噓4(402)
留言6則, 4人參與, 最新討論串5/6 (看更多)
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來寫比較好呢? 謝謝!! -- 派特.萊利說道 : "他仍然是米高.佐丹(Michael Jordan)" 2001. Oct -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 160.39.59.116

10/04 09:03, , 1F
4. /^!"(\S+\s*)+"/ S前少一個\
10/04 09:03, 1F

10/04 09:31, , 2F
喔 抱歉 我是在這裡沒打上 我程式裡還是有\的
10/04 09:31, 2F

10/04 09:42, , 3F
2也沒問題嗎? 4--> /^!"((\S+\s*)+)"/
10/04 09:42, 3F
※ 編輯: willhunting 來自: 160.39.247.23 (10/04 10:02) ※ 編輯: willhunting 來自: 160.39.247.23 (10/04 10:02)

10/04 10:05, , 4F
A兄 4我照這樣打也還是不行 說不定是我其他規則定的
10/04 10:05, 4F

10/04 10:06, , 5F
有ambiguous的狀況 想請教2的問題可能是哪裡呢?
10/04 10:06, 5F

10/04 17:45, , 6F
regexp已經開版囉,大家可以移過去討論~~
10/04 17:45, 6F
文章代碼(AID): #170_hmB5 (Perl)
討論串 (同標題文章)
文章代碼(AID): #170_hmB5 (Perl)