ホームページ >データベース >mysql チュートリアル >MySQL REGEXP クエリが「繰り返し演算子のオペランドが無効」で失敗するのはなぜですか?

MySQL REGEXP クエリが「繰り返し演算子のオペランドが無効」で失敗するのはなぜですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-26 15:54:11616ブラウズ

Why Does My MySQL REGEXP Query Fail with

正規表現の失敗: 'repetition-operator operand valid'

次の MySQL クエリを実行しようとすると、

SELECT text 
FROM `articles` 
WHERE content REGEXP '.*<img.*?src=\"http://www' 
ORDER BY date DESC

エラー: #1139 - 正規表現からエラー「繰り返し演算子のオペランドが無効です」を受け取りました。 Notepad で正規表現が正しく機能しているにもかかわらず、MySQL はそれを拒否します。

問題の理解: POSIX と PCRE

MySQL 正規表現エンジンは、疑問符のサポートがない POSIX 1003.2 に準拠しています。 (?) 量指定子 ( および ) の非貪欲な修飾子として。したがって、を採用することはできないのですか?そして ?

解決策: Greedy Quantifier の使用

この問題を解決するには、意図した目的には十分に対応できる、Greedy バージョンの量指定子を使用します。それにもかかわらず、

<img>

のような要素の望ましくない一致を防ぐために、次のように否定文字クラスを組み込みます。

'<img[^>]*src="http://www'

" 文字はエスケープする必要がなく、.* であることに注意してください。先頭は暗黙的です。

以上がMySQL REGEXP クエリが「繰り返し演算子のオペランドが無効」で失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。