mysql - REGEX_REPLACE 不匹配从开始到第一次出现 5 位数字单词的所有字符

标签 mysql regex

我在 Mysql 表中有这条记录:

ADDRESS
----------------------------------
sdasd 4354 ciao 12345 sdsdsa asfds 

我想匹配从开头到第一次出现 5 位数字单词的所有字符,包括它。 在这种情况下,使用 REGEXP_REPLACE,我想删除匹配的子字符串并返回 sdsdsa asfds

我尝试做的是:

SELECT REGEXP_REPLACE(ADDRESS, '^.+\b\d{5}\b.','') FROM `mytable`

正则表达式似乎可以在这个 snippet 中测试它我不明白为什么 Mysql 不会。

最佳答案

MySQL supports POSIX regex它不支持类似 PERL 的属性,例如\b , \d等等

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

SELECT REGEXP_REPLACE
('sdasd 4354 ciao 12345 sdsdsa asfds', '^.+[[:<:]][0-9]{5}[[:blank:]]+', '') as val;

+--------------+
| val          |
+--------------+
| sdsdsa asfds |
+--------------+

正则表达式详细信息:

  • ^.+ : 在开头匹配 1 个或多个任意字符(贪心)
  • [[:<:]] : 匹配单词边界(零宽度)
  • [0-9]{5} : 恰好匹配 5 位数字
  • [[:blank:]]+ : 匹配 1 个或多个空格(制表符或空格)

关于mysql - REGEX_REPLACE 不匹配从开始到第一次出现 5 位数字单词的所有字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58461601/

相关文章:

javascript - 从 .js 文件内的 MySQL 获取数据

mysql - 查询返回错误结果

regex - .htaccess 重写文件夹异常

c++ - std::regex_replace:分离匹配组的访问索引

Java 单词查找器程序无法捕获字符串中的所有唯一条目

java - Android链接PHP到MySQL以登录应用程序

mysql - 在数据库中选择较小形状的问题

java - 团体捕获的预期结果?

mysql - 插入新记录时检查外键引用的功能

PHP - Preg_match 最短匹配