在文本列(HTML)中使用占位符:
[[ID|STRING]]示例:
[[2|telefon]]
[[43|name]]还有使用以下格式的占位符:
[[ID|STRING|STRING]]示例:
[[56|baustein|s]]第一个字符串总是命名为"baustein",第二个字符串是alwys "s“或"d”。
我希望获得字符串列包含第一种占位符的所有记录,但不包含第二种占位符。
我的正则表达式是:
\[\[#d.id#\|(anrede|name1|name2|name3|strasse|plz|ort|telefon|fax|email|emailaddress|web|bild)\]\]注意:#d.id#是一个包含整数的变量。
不幸的是,查询结果包括包含第一个和第二个占位符的所有记录,而不仅仅是第一个占位符。
我已经使用https://regex101.com/ (PCRE2 PHP)测试了regexp,它似乎还可以。
我和MySQL一起错过了什么?
发布于 2021-10-26 21:34:15
使用
REGEXP '[[][[][0-9]+[|](anrede|name1?|name2|name3|strasse|plz|ort|telefon|fax|email|emailaddress|web|bild)]]'解释
--------------------------------------------------------------------------------
[[] any character of: '['
--------------------------------------------------------------------------------
[[] any character of: '['
--------------------------------------------------------------------------------
[0-9]+ any character of: '0' to '9' (1 or more
times (matching the most amount possible))
--------------------------------------------------------------------------------
[|] any character of: '|'
--------------------------------------------------------------------------------
( group and capture to \1:
--------------------------------------------------------------------------------
anrede 'anrede'
--------------------------------------------------------------------------------
| OR
--------------------------------------------------------------------------------
name 'name'
--------------------------------------------------------------------------------
1? '1' (optional (matching the most amount
possible))
--------------------------------------------------------------------------------
| OR
--------------------------------------------------------------------------------
name2 'name2'
--------------------------------------------------------------------------------
| OR
--------------------------------------------------------------------------------
name3 'name3'
--------------------------------------------------------------------------------
| OR
--------------------------------------------------------------------------------
strasse 'strasse'
--------------------------------------------------------------------------------
| OR
--------------------------------------------------------------------------------
plz 'plz'
--------------------------------------------------------------------------------
| OR
--------------------------------------------------------------------------------
ort 'ort'
--------------------------------------------------------------------------------
| OR
--------------------------------------------------------------------------------
telefon 'telefon'
--------------------------------------------------------------------------------
| OR
--------------------------------------------------------------------------------
fax 'fax'
--------------------------------------------------------------------------------
| OR
--------------------------------------------------------------------------------
email 'email'
--------------------------------------------------------------------------------
| OR
--------------------------------------------------------------------------------
emailaddress 'emailaddress'
--------------------------------------------------------------------------------
| OR
--------------------------------------------------------------------------------
web 'web'
--------------------------------------------------------------------------------
| OR
--------------------------------------------------------------------------------
bild 'bild'
--------------------------------------------------------------------------------
) end of \1
--------------------------------------------------------------------------------
]] ']]'不要转义]括号,用字符类转义单个字符,或使用双反斜杠、\\[\\[和\\|。
https://stackoverflow.com/questions/69725026
复制相似问题