匹配可选的行尾

时间:2013-10-31 13:10:26

标签: mysql regex

嘿我想在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"

谢谢!

2 个答案:

答案 0 :(得分:1)

MySQL正则表达式不支持非捕获组。其余的应该没问题。它绝对支持$匹配字符串的结尾。此外,\ D不受支持,但您可以使用[^ 0-9]

试试这个:

SELECT id FROM stories WHERE body REGEXP 'download:223([^0-9]|$)'

MySQL组无法捕获,因此不需要支持非捕获组。

参考来源: Using Non-Capturing Groups in MySQL REGEXP

答案 1 :(得分:1)

这个正则表达式适合你:

"download:223([^0-9]|$)"

MySQL正则表达式引擎不支持\ D,\ d等