推 salagadoola:我在perl裡用$str=~/(XOX[^XOX]*KOK)/拿到的$1是對的 02/21 11:01
推 giacch:[]裡面的是算字元的... = = 02/21 15:47
→ giacch:/XOX([^K]*|[^K]*K[^O]*|[^K]*K[^O]*KO[^K]*)KOK/ 02/21 18:12
→ giacch:sorry... 上面有誤... 02/21 18:19
→ giacch:/XOX([^K]|K[^O]|KO[^K])*KOK/ 想很久, 不知道對不對... 02/21 18:31
> -------------------------------------------------------------------------- <
作者: franklai (半分の月) 看板: RegExp
標題: Re: [問題]新手發問
時間: Thu Feb 21 14:29:15 2008
※ 引述《xxxx9659 (嘎嘎嘎嘎嘎)》之銘言:
: 我想要用正規表達式抓出第一個 開頭是XOX 結尾是KOK 的字串
: 例如
: asxzxaXOXsooxazKOKasoooxXOXasaszKOKxzassxXOXoasKOKaaszoass
: ~~~~~~~~~~~~
: 請問要怎麼寫
: 我原本是這樣寫的
: /XOX[^XOX]*KOK/
: 但是這樣會錯...
當字串是 XOXXKOK 的時候就會抓不到了
因為 [^XOX] 的意思是「除了O與X之外的字元」
目前想到的寫法是用non-greedy
XOX.*?KOK
不知道有沒有其他方法
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.122.6.166
> -------------------------------------------------------------------------- <
作者: DarkKiller (System hacked) 看板: RegExp
標題: Re: [問題]新手發問
時間: Thu Feb 21 16:15:09 2008
※ 引述《xxxx9659 (嘎嘎嘎嘎嘎)》之銘言:
: 我想要用正規表達式抓出第一個 開頭是XOX 結尾是KOK 的字串
: 例如
: asxzxaXOXsooxazKOKasoooxXOXasaszKOKxzassxXOXoasKOKaaszoass
: ~~~~~~~~~~~~
: 請問要怎麼寫
: 我原本是這樣寫的
: /XOX[^XOX]*KOK/
: 但是這樣會錯...
PHP:
if (preg_match('/XOX(.*?)KOK/', $str, $m))
print $m[1];
Perl:
if ($str =~ /XOX(.*?)KOK/) {
print $1;
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.54.119
推 xxxx9659:喔!原來如此!!感謝感謝 02/23 01:48