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

Barbara Streisand
リリース: 2024-11-26 15:54:11
オリジナル
595 人が閲覧しました

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート