#1139 錯誤:正規表示式中的重複運算子運算元無效
使用正規表示式(regex) 查詢MySQL 表以選擇特定的結果,使用者偶爾會遇到錯誤「#1139 - Got error 'repetition-operator operand invalid' from regexp."此錯誤表示提供的正規表示式包含無效的重複運算子運算元。
原因:
出現該錯誤是因為 MySQL 使用 Henry Spencer 符合 POSIX 標準的正規表示式實現。此實作不支援 PCRE(Perl 相容正規表示式)中使用的非貪婪量詞,例如「?」。因此,在正規表示式中的“*”或“”後使用“?,”將觸發錯誤。
解決方案:
要解決此問題,請替換非- 貪婪量詞“?”使用貪婪量詞“*”,仍然會執行必要的匹配:
SELECT text FROM `articles` WHERE content REGEXP '.*<img[^>]*src="http://www' ORDER BY date DESC
此外,避免匹配諸如 或
'<img[^>]*src="http://www'
注意雙引號不需要轉義,開頭的 .* 是隱含的。透過仔細使用貪婪量詞和否定字元類,您可以有效地從 MySQL 表中選擇所需的結果,而不會觸發「重複運算子運算元無效」錯誤。
以上是為什麼 MySQL REGEXP 會拋出「#1139 錯誤:重複運算子運算元無效」以及如何修復它?的詳細內容。更多資訊請關注PHP中文網其他相關文章!