我试图匹配SMF论坛中的内部链接,并将BBC标签从url转换为iurl,以便像这样的链接:
第一个月
将成为:[iurl=https://www.translatum.gr/forum/index.php?topic=989144.0]κατ' ἐπιταγήν -> by way of command[/iurl]
个
我在PhpMyAdmin上尝试过类似的东西(使用MariaDB 10.3)
UPDATE smf_messages
SET body = REGEXP_REPLACE(body,
'(\[url=https:\/\/www\.translatum\.gr)(.*?)(\[\/url\])',
'[iurl=https://www.translatum.gr\\2[/iurl]
')
WHERE ID_TOPIC = 987873
字符串
虽然它看起来在test in regex101上工作,但在SQL上会产生垃圾输出(即它被替换为链接及其文本的多次迭代)。我用this for syntax reference
1条答案
按热度按时间i86rm4rw1#
你需要对字符串字面量中的反斜杠进行双转义,以实际定义形成 regex escapes 的字面量反斜杠char。
另外,你的正则表达式替换太冗余了,你可以捕获更多的文本,让你的替换更短:
字符串
请参阅this regex demo。