【问题标题】:What are dangling metacharacters in regex?什么是正则表达式中的悬空元字符?
【发布时间】:2014-01-02 08:26:07
【问题描述】:

在 Ruby 中,我编写了一个简单的正则表达式来查找第一个 {

txt.gsub! /^.*{/, '{'

每当我运行此程序时,对于我的目的而言,超过该点的所有内容都可以正常工作,但是有一个轻微的错误,类似于 WARNING: Dangling metacharacter detected.尽可能高效?

【问题讨论】:

    标签: ruby regex metacharacters


    【解决方案1】:

    {在正则表达式中有特殊含义。

    PATTERN{m,n}
    

    以上匹配PATTERN重复m~n次。

    如果您想避免该警告(以匹配字面意思匹配 {),请转义它。

    txt.gsub! /^.*\{/, '{'
    

    更新

    顺便说一句,/^.*{/ 没有捕捉到第一个 { 因为 .* 是贪婪匹配;它尽可能地消耗。

    【讨论】:

    • 那么,悬空元字符只是没有设置为转义的元字符?
    • @T145,Ruby正则表达式足够聪明,不会出错。也许您正在使用某种语法检查,lint ??
    • 是的,我有一个测试套件设置为在发生某些操作时在开发环境中运行。但是,我知道,这就是悬空元字符?
    • @T145,正如我在答案中提到的,当{用作元字符时,它应该是PATTERN{m,n}的形式。例如:\d{2,3} 匹配 2 到 3 位数字。在/^.*{/ 中,没有数字,也没有右大括号。
    • @T145,顺便问一下,您使用什么工具(语法检查器、lint ..)?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-08
    • 1970-01-01
    • 1970-01-01
    • 2011-06-21
    • 2010-12-01
    相关资源
    最近更新 更多