-2

だから文字列があります、

<?php

$string = <<<STR

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

STR;

「world」という単語と1番と3番を除いて、すべてをNULLに置き換えたい。

正規表現を使用して、その文字列から「world13」または「world31」を取得したいだけです。

私はすでにstrpos()とsubstr()を介して基本的なソリューションを実装しており、これは例外として機能します。しかし、私はRegExpを介してこれを行う必要があります

質問は:

RegExを使用してその単語を抽出することは可能ですか?

4

3 に答える 3

1

正規表現を使用してその単語を抽出することは可能ですか?

はい。次の正規表現を使用できます。

(world)

知ってるけど、world13やworld31が抽出できない

ああ、わかりました!以下を使用できます。

$string = preg_replace('/.*/s', 'world13', $string);
于 2012-06-21T08:08:33.793 に答える
1

~(world(?:(31|13))~i. は'i'、正規表現の大文字と小文字を区別しません。は?:そこにあるので、別の結果のmatches配列には入れません。ちなみに、非常に複雑とは言えません:)そこに1と3をすべて入れたい場合は、を使用できます~(world|1|3)~i

于 2012-06-21T08:18:03.700 に答える
1

簡単な解決策は、必要なものを見つけて、それらを文字列に結合することです。

preg_match_all('/world|[13]/', $string, $matches);
$ret = join($matches[0]);
于 2012-06-21T08:31:48.947 に答える