【问题标题】:An unescaped delimiter must be escaped with a backslash [duplicate]未转义的分隔符必须用反斜杠转义[重复]
【发布时间】:2019-09-29 19:03:12
【问题描述】:

我想匹配正则表达式中的文字/ 字符,所以我使用[/]。使用this example 会导致

/ 未转义的分隔符必须用反斜杠 () 转义

是我错了还是网站错了?据我所知,方括号[] 内的所有字符都必须以不带转义字符的文字形式出现。

请向我澄清。

编辑: 我使用 MySQL。如果我想遇到文字/,应该如何呈现/?使用[/] 正确吗?还是[\/]

【问题讨论】:

  • 什么风格/语言?不,括号不会改变 / 的含义,因为 / 不是表达式的一部分。它是一个外部分隔符。
  • 如果/ 是您的默认正则表达式分隔符,那么您需要像\/ 一样对其进行转义,无论它是否在字符集中都无关紧要。但是如果你像在 PHP 中那样改变它,那么你甚至不需要在字符类之外转义它。
  • 我正在使用 MySQL。请注意,我在方括号内谈论 / 因为我想匹配 / 字面意思。
  • 在 regex101 上,您可以更改分隔符(在本例中为正斜杠)。在输入正则表达式的输入字段中,左侧有 3 个垂直点。您可以单击它并将其更改为正斜杠以外的其他内容。
  • @user9371654:在 MYSQL db 中,您不需要转义 /,可以按原样写 /。您能否分享您正在使用的 MYSQL 数据库版本以及导致您出现此错误的查询是什么?

标签: regex string delimiter


【解决方案1】:

这取决于使用的语言使用的分隔符。它是许多语言中的字符/,因此如果您使用文字斜线,则需要对其进行转义(如[\/]),或者在语言中尽可能使用不同的分隔符。

【讨论】:

    【解决方案2】:

    您提供的链接中存在模式错误。如果你想传递一个正斜杠,你需要一个反斜杠在 char 列表中。您可能希望在此站点中使用[\/] 进行测试,然后在您想在 MySQL 中使用时将其删除。

    更正

    MySQL 中的元字符

    • This post 可能会帮助您了解 MySQL 中的元字符。

    • This answer 还解释了 mysql 中的元字符。

    • This post 解释了如何在 MySQL 中转义元字符。

    【讨论】:

    • 我明白了。但是我很惊讶为什么会在那个网站上发生这种情况?据我所知,如果我想遇到文字字符,我会将其按原样放在方括号中。我很困惑我应该在 MySQL 中做什么?我应该按字面意思输入 [/] 还是像网站编辑器一样将其转义 [\/]?
    猜你喜欢
    • 2020-05-06
    • 2012-02-10
    • 1970-01-01
    • 2012-11-04
    • 1970-01-01
    • 2015-05-19
    • 2015-09-21
    • 2011-11-09
    • 2017-04-21
    相关资源
    最近更新 更多