1

我想找到所有使用 PHP 和 regEx 的演示词。

$input ='demo';
$pattern = ''; //$input can be used along with regex, please help here 
$text = 'This is dem*#o text, contains de12mo3 text, is .demo23* text' 

if(preg_match($pattern, $text))
{
 echo 'found';
}else{
 echo'not found';
}

demo中的搜索词text可能以下列格式出现

1) may start with special characters/numbers Eg. "12*demo"
2) may contain special characters/numbers within the word Eg.  "de12*mo"
3) may end with special characters/numbers Eg. "demo12*"

请帮助我卡住了,在此先感谢!

笔记:The $input can be max. of 15 in length

4

3 回答 3

3

解决方案

我将首先从字符串中删除所有特殊字符和数字,然后使用单词边界匹配单词:

$cleaned = preg_replace('/[^a-z ]+/i', '', 'This is dem*#o text, contains de12mo3 text, is .demo23* text');

preg_match_all('/\bdemo\b/i', $cleaned, $matches, PREG_OFFSET_CAPTURE);

var_dump($matches);

会给你(键盘演示):

array(1) {
  [0] => array(3) {
    [0] => array(2) {
      [0] => string(4) "demo"
      [1] => int(8)
    }

    [1] => array(2) {
      [0] => string(4) "demo"
      [1] => int(27)
    }

    [2] => array(2) {
      [0] => string(4) "demo"
      [1] => int(40)
    }
  }
}

解释

/[a-z ]+/i第一行替换字符串中与 ''匹配的任何字符(称为主题参数) ,实质上是删除字符。正则表达式匹配不是 ( ^) 字母a-z或空格的任何字符(或字符组)。该i标志告诉正则表达式搜索应该不区分大小写(这使我们免于编写a-zA-Z)。

下一行使用单词边界来匹配单词“demo”。但是,您可以用任何单词替换。

新的正则表达式技术

于 2012-06-24T07:27:06.407 回答
1
/\b[^a-z]*d[^a-z]*e[^a-z]*m[^a-z]*o[^a-z]*\b/i

在演示字符之间匹配除 az 以外的任何内容

于 2012-06-24T07:27:53.173 回答
0

可能效率不高;但是你可以使用这个:

/(.*)d(.*)e(.*)m(.*)o(.*)/i

那会匹配任何东西。

于 2012-06-24T07:24:50.340 回答