嘿我想在MySQL中使用正则表达式来匹配行。 它需要匹配模式结束的行与任何非数字或行尾的行。
此模式适用于Ruby /download:223(?:[\D]|$)/
在MySQL中它不匹配。我猜它不允许eol的可选匹配。
SELECT id FROM stories WHERE body REGEXP 'download:223(?:[\D]|$)'
我需要匹配以下内容(引号仅为了清晰起见):
"download:223"
"download:223*"
"download:223 something"
"download:223 more text"
但不是以下(仅为了清楚起见再次引用):
"download:2234"
"download:2234 more text"
"download:2234*"
"download:2234* even more"
谢谢!
答案 0 :(得分:1)
MySQL正则表达式不支持非捕获组。其余的应该没问题。它绝对支持$匹配字符串的结尾。此外,\ D不受支持,但您可以使用[^ 0-9]
试试这个:
SELECT id FROM stories WHERE body REGEXP 'download:223([^0-9]|$)'
MySQL组无法捕获,因此不需要支持非捕获组。
答案 1 :(得分:1)
这个正则表达式适合你:
"download:223([^0-9]|$)"
MySQL正则表达式引擎不支持\ D,\ d等