0

私はプレグマッチでいくつかの基本を経験しましたが、あなたがそれに慣れていないときはかなり難しいです.

私がやろうとしているのは、文字列でこのインスタンスを検索することです

バグ1234

大文字と小文字を区別してはならないので、bug1234 または BuG1234 が機能するはずです。bug という単語の後に任意の 4 つの数字が続く必要があります。bug1234 の間にスペースや何かを入れてはいけません。間にスペースがない限り、前に何も付けたり、直後に来たりしないバグ1234でなければならないので、「バグ1234には解決できない問題があります」が一致します。

明確にするために、具体的には 1234 以外の任意の数字を指定できますが、4 桁である必要があります

私の不自由な試みは次のとおりです。

$file_string = $workdetails->text;
$file_string = strtolower($file_string);
$bugkey = "/bug[0-9]{4}/";
$nosey = preg_match($bugkey, $file_string);
if($nosey !== false) 
{
echo "We have a match baby!!"
}

それは、バグという言葉に言及せずに、あらゆる種類の空の文字列を返すように見えました

4

3 に答える 3

1

正規表現を次のように変更してみてください。

/\bbug[0-9]{4}\b/i

修飾子は単語の\b境界でのみ一致するため、、、などのように一致しないようabug1234にしbug12345ますbug1234was badi大文字と小文字を区別しないように、修飾子も追加しました。を使用する必要はなくなりましたstrtolower

また、preg_match通常は整数を返し、(int)0一致するものがない場合はを返します。失敗した場合にのみ戻りますFALSE。したがって、一致チェックを次のように変更する必要があります。

if ($nosey > 0) {
// or just
if ($nosey) {
于 2012-09-12T21:25:40.100 に答える
0

これを試して:/(?ism)bug(?i-sm)[0-9]{4}/

正規表現テストツールで データを使用してテスト:

sdfsfsbUG1234cccs

乾杯!

于 2012-09-12T21:22:29.473 に答える
0

試してみてください:

preg_match('/\b(bug\d{4})/i', $file_string, $match);
print_r($match);

修飾子 iは大文字と小文字を区別しないことを表し、は\b単語全体 (単語境界) のみを表します。

于 2012-09-12T21:24:06.393 に答える