【问题标题】:How to escape parentheses in a REGEXP clause如何在 REGEXP 子句中转义括号
【发布时间】:2015-09-25 05:41:11
【问题描述】:

在我的数据库中,我有一些这样的键:

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'

这可行,但不是 100% 准确。

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

转义正括号的正确方法是什么?

【问题讨论】:

  • this answer 是否相关?我会认为反斜杠会起作用。您是直接在 MySQL 中运行此查询,还是通过可能使用这些反斜杠的脚本语言运行此查询?
  • 我在 PHP 中运行它。
  • 如果它在双引号内,你需要在反斜杠上加倍,否则你只是告诉 PHP 你想要一个文字括号。 "\(" 只是 "(""\\(" 实际上是 \( 一旦它到达 MySQL。

标签: php mysql regex


【解决方案1】:

您可以使用方括号转义括号,如下所示:

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

当您需要将查询字符串嵌入到为字符串文字中的反斜杠提供自己的解释的语言中时,这尤其有用。

Demo.

【讨论】:

  • 就是这样!谢谢!
  • 这是一个非常有创意的解决方案——通常不是我认为使用字符类的方式,但这是个好主意
猜你喜欢
  • 2011-08-17
  • 2010-10-01
  • 1970-01-01
  • 2017-01-26
  • 2016-09-08
  • 1970-01-01
  • 2021-12-31
  • 1970-01-01
相关资源
最近更新 更多