MySQL - REGEXP用于匹配以“#”开头的数字,而不是后跟另一个数字

时间:2014-04-24 08:01:32

标签: mysql regex

正如我认为我已经在标题中解释过的那样,我需要一个REGEXP模式来选择表中满足此模式的特定列的所有行:

字符'#'后跟给定的数字,例如。 '5',必须至少出现一次,而不是另一个数字。

例如,给定数字'5':

(#12+#55-#8)/#2 -> MUST NOT match the pattern.
(#12+#5-#8)/#2 -> MUST match the pattern.
(#12+#55-#5)/#2 -> MUST match the pattern.

不幸的是,我不是正则表达式专家,我已经浪费了几个小时而没有取得多大成功。 任何帮助都非常欢迎。

2 个答案:

答案 0 :(得分:2)

您可以使用此模式:

select * from table1
WHERE col1 REGEXP '#5([^0-9]|$)'

我们的想法是找到一个#5,后面跟不是数字[^0-9]或字符串$的结尾。

请参阅demo here

答案 1 :(得分:1)

在这种情况下,以下方法可行:

^.*?(#5)([^5]|$).*?$

Demo