0

preg_match で REGEX を使用するのはこれが初めてで、とにかく REGEX の経験はまったくありません。defそのため、文字列 (大文字と小文字を区別しない)の後に入力の文字列が続く可能性がある文字列を見つけようとしています。私が使用している正規表現は次のとおりです。(?-i)def?\.

次のエラーが表示されます。Warning: preg_match(): Unknown modifier 'd' in /var/www/process.php on line 11

入力時:asdsa saj dasjdkj def ddas

他の入力でも同じエラーが発生します。

それで、私はここで何を台無しにしていますか?簡単な修正はありますか?

これがばかげているように思われる場合は申し訳ありませんが、私は PHP のこの分野のひよこです。

4

1 に答える 1

2

正規表現には区切り文字を使用する必要があります。これは正規表現の最初の文字であり、非英数字 (非空白、非バックスラッシュ) 文字でなければなりません。したがって、正規表現パーサーは(、例の区切り文字 (ブラケット スタイル) を使用し、d は閉じブラケットの後の修飾子であると見なしますが、存在しないため認識されません。

より良い正規表現は次のようになります。

/def/i

これは、文字列の「def」に一致します。その部分と何を一致させようとしています(?-i)か?defの後に? を付ける必要があり.ます。fオプションですか?これは、正規表現の例で現在正規表現エンジンに伝えていることです。

編集: 最初に「Was」または「Will」と一致し、その後にスペースが続きます:

/^(Was|Will) /i
于 2013-02-17T08:15:07.537 に答える