非常复杂的RegEx

时间:2012-06-21 08:05:12

标签: php regex

所以有一个字符串,

<?php

$string = <<<STR

/\!@#$%^&*()?.,djasijdiwqpk,=-c./zcxzo123154897kp02ldz.,world90iops02&&&8ks

STR;

我想将所有内容替换为NULL,除了单词“world”和数字1和3,

我只想从该字符串使用正则表达式

获取“world13”或“world31”

我已经实施了基本解决方案, 通过strpos()和substr(),这是有效的。但我需要通过RegExp

来做到这一点

问题是:

是否可以使用RegEx提取该单词?

3 个答案:

答案 0 :(得分:1)

  

是否可以使用RegEx提取该单词?

是。您可以使用此正则表达式:

(world)

  

我知道,但我无法提取world13或world31

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

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

答案 1 :(得分:1)

~(world(?:(31|13))~i'i'使正则表达式不区分大小写。 ?:就在那里,所以它不会在一个单独的结果中将它放在matches数组中。顺便说一下,它不会说它非常复杂:)如果你想要每个 1和3,你可以使用~(world|1|3)~i

答案 2 :(得分:1)

一个简单的解决方案是找到你需要的东西,然后将它们连接成一个字符串。

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