小编典典

在MySQL中需要REGEXP匹配

sql

我想匹配一个看起来像这样的字符串:

[lang_de]Hallo![/lang_de][lang_en]Hello![/lang_en]HeyHo[lang_es]Hola![/lang_es]

如果存在lang_tags不包含的文本(在本示例中为HeyHo),我希望匹配返回true 。也可以将其放置在字符串的开头或结尾。

空格不应匹配,例如[lang_de]Tisch[/lang_de] [lang_en]Table[/lang_en]不应导致匹配。

我不能使用超前或回溯,因为MySQL似乎不支持此功能。

有什么建议?


阅读 143

收藏
2021-04-28

共1个答案

小编典典

试试这个正则表达式:

'^ *[^[ ]|\\[/lang_[a-z]{2}\\] *[^[ ]'

这是您可以使用的方式:

select * 
from <table> 
where <field> regexp '^ *[^[ ]|\\[/lang_[a-z]{2}\\] *[^[ ]'

它应该处理所有情况:

  • 中间
  • 不是空格
2021-04-28