1

PHPと正規表現を使用してすべてのデモワードを検索したいと思います。

$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';
}

の検索ワードdemotext、次の形式で存在する可能性があります

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

次の行では、単語の境界を使用して単語「デモ」と一致させます。ただし、任意の単語で置き換えることができます。

新しい正規表現テクニック

于 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 に答える