2012-06-21 109 views
-2

所以有一個字符串,非常複雜的正則表達式

<?php 

$string = <<<STR 

/\[email protected]#$%^&*()?.,djasijdiwqpk,=-c./zcxzo123154897kp02ldz.,world90iops02&&&8ks 

STR; 

我要取代一切爲NULL,除了詞「世界」和數字1和3,

我只是想獲得「world13」或「world31」使用正則表達式使用正則表達式

我已經通過strpos()和substr()實現了基本解決方案, ,並且這是工作的例外。但是,我需要通過正則表達式

做到這一點

的問題是:

是否可以提取使用正則表達式這個詞?

+1

哪裏'1'和'3'從哪裏來? – zerkms

回答

1

~(world(?:(31|13))~i'i'使正則表達式不區分大小寫。 ?:在那裏,所以它不會將它放在單獨的結果中的匹配數組中。順便說一下,不會說這很複雜:)如果你想 1和3在那裏,你可以使用~(world|1|3)~i

+0

你說謊!表達式不會從OP $'string'中提取字符串'world13'! – Qtax

+2

似乎不工作? http://rubular.com/r/pLQNJ5XFxT – furier

+0

@Qtax不,不會的,你完全正確。不過,我認爲他確實想要「世界31」或「世界13」,而不是刻意抱怨他的例子字符串不正確。所以是的,他的問題可能會更好,但他的問題的解決方案似乎給出了。長大。 –

1

是否可以使用RegEx提取該單詞?

是的。您可以使用此正則表達式:

(world) 

我知道,但我不能提取world13或world31

啊,我明白了!您可以使用:

$string = preg_replace('/.*/s', 'world13', $string); 
+0

是啊我知道,但是,我不能提取world13或world31 – Yang

+0

@metal_fan,我修正了它。 – Qtax

+2

精彩,但我建議將其簡化爲'$ string ='world13';' – zerkms

1

一個簡單的解決方案是找到你需要的東西,然後將它們加入到一個字符串中。

preg_match_all('/world|[13]/', $string, $matches); 
$ret = join($matches[0]);