要更改为单词的每个结尾而不是字符串的结尾(匹配)-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 |