要更改为单词的每个结尾而不是字符串的结尾(匹配)-MariaDB/MySQL+;REGEXP\u替换

要更改为单词的每个结尾而不是字符串的结尾(匹配)-MariaDB/MySQL+;REGEXP\u替换,mysql,regexp-replace,Mysql,Regexp Replace,是否要更改为单词的每个结尾而不是字符串的结尾(匹配) 我现在有这个问题: SELECT REGEXP_REPLACE(name,"(a|o|e|y|cy|dzy|rzy|owie|i|u|ów|owi|em)$",'') FROM `zp_poster` SELECT REGEXP_REPLACE("Józefowi Piłsudski","(a|o|e|y|cy|dzy|rzy|owie|i|u|ów|owi|em)$",'') 查询示例: SELECT REGEXP_REPLACE(na

是否要更改为单词的每个结尾而不是字符串的结尾(匹配)

我现在有这个问题:

SELECT REGEXP_REPLACE(name,"(a|o|e|y|cy|dzy|rzy|owie|i|u|ów|owi|em)$",'') FROM `zp_poster`
SELECT REGEXP_REPLACE("Józefowi Piłsudski","(a|o|e|y|cy|dzy|rzy|owie|i|u|ów|owi|em)$",'')
查询示例:

SELECT REGEXP_REPLACE(name,"(a|o|e|y|cy|dzy|rzy|owie|i|u|ów|owi|em)$",'') FROM `zp_poster`
SELECT REGEXP_REPLACE("Józefowi Piłsudski","(a|o|e|y|cy|dzy|rzy|owie|i|u|ów|owi|em)$",'')
预期结果:

Józef Piłsudsk
实际结果:

Józefowi Piłsudsk
可以使用单词边界字符类

从8.0.4版开始,MySQL正则表达式依赖于ICU符号(Unicode的国际组件),其中单词边界表示为
\b
。在早期版本中,使用了Spencer实现,边界表示为
[[[::]]
(在单词后面)

WITH t AS (
  SELECT 'Józefowi Piłsudski' name
  UNION ALL SELECT 'Piłsudski Józefowi'
)
SELECT 
    name,
    REGEXP_REPLACE(
      name,
      '(a|o|e|y|cy|dzy|rzy|owie|i|u|ów|owi|em)\\b',
      ''
    ) replaced
FROM t;

| name               | replaced       |
| ------------------ | -------------- |
| Józefowi Piłsudski | Józef Piłsudsk |
| Piłsudski Józefowi | Piłsudsk Józef |