3

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

谢谢!

4

2 回答 2

1

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

尝试这个:

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

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

参考来源: 在 MySQL REGEXP 中使用非捕获组

于 2013-10-31T13:28:07.070 回答
1

这个正则表达式应该适合你:

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

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

于 2013-10-31T13:35:03.787 回答