我想匹配一个看起来像这样的字符串:
[lang_de]Hallo![/lang_de][lang_en]Hello![/lang_en]HeyHo[lang_es]Hola![/lang_es]
如果存在lang_tags不包含的文本(在本示例中为HeyHo),我希望匹配返回true 。也可以将其放置在字符串的开头或结尾。
HeyHo
空格不应匹配,例如[lang_de]Tisch[/lang_de] [lang_en]Table[/lang_en]不应导致匹配。
[lang_de]Tisch[/lang_de] [lang_en]Table[/lang_en]
我不能使用超前或回溯,因为MySQL似乎不支持此功能。
有什么建议?
试试这个正则表达式:
'^ *[^[ ]|\\[/lang_[a-z]{2}\\] *[^[ ]'
这是您可以使用的方式:
select * from <table> where <field> regexp '^ *[^[ ]|\\[/lang_[a-z]{2}\\] *[^[ ]'
它应该处理所有情况: