如何在正则表达式中转义括号

3
在我的数据库中,我有一些类似这样的键:
custom_field_languages(0)language
custom_field_languages(1)language
custom_field_languages(2)language
...

我需要它们全部。但这并不起作用:

REGEXP '^custom_field_languages([0-9])language'

这也不行。

REGEXP '^custom_field_languages\([0-9]\)language'

这个方法可以使用,但并不是百分之百准确。

REGEXP '^custom_field_languages.[0-9].language'

如何正确转义普通括号?


这个答案是否相关?我本以为反斜杠会起作用。你是直接在MySQL中运行这个查询还是通过一个可能使用这些反斜杠的脚本语言来运行的? - tadman
我正在使用PHP运行此程序。 - Philipp Kühn
1
如果这个内容在双引号内,你需要在反斜杠上加倍,否则你只是告诉 PHP 你想要一个字面上的括号。"\(" 就是 "(",而 "\\(" 到达 MySQL 后实际上是 \( - tadman
1个回答

6
您可以使用方括号来转义括号,就像这样:

您可以使用方括号来转义括号,就像这样:

REGEXP '^custom_field_languages[(][0-9][)]language'

这在你需要将查询字符串嵌入到提供自己解释的反斜杠字符串文本中时非常有用。
演示链接: Demo.

就这样了!谢谢! - Philipp Kühn
1
这是一个非常有创意的解决方案 - 通常我不会考虑使用字符类,但这是一个好主意。 - But those new buttons though..

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接