什么是正则表达式中的悬空元字符?
Posted
技术标签:
【中文标题】什么是正则表达式中的悬空元字符?【英文标题】:What are dangling metacharacters in regex? 【发布时间】:2014-01-02 08:26:07 【问题描述】:在 Ruby 中,我编写了一个简单的正则表达式来查找第一个 :
txt.gsub! /^.*/, ''
每当我运行此程序时,对于我的目的而言,超过该点的所有内容都可以正常工作,但是有一个轻微的错误,类似于 WARNING: Dangling metacharacter detected.
尽可能高效?
【问题讨论】:
【参考方案1】:在正则表达式中有特殊含义。
PATTERNm,n
以上匹配PATTERN重复m~n次。
如果您想避免该警告(以匹配字面意思匹配 ),请转义它。
txt.gsub! /^.*\/, ''
更新
顺便说一句,/^.*/
没有捕捉到第一个 因为
.*
是贪婪匹配;它尽可能地消耗。
【讨论】:
那么,悬空元字符只是没有设置为转义的元字符? @T145,Ruby正则表达式足够聪明,不会出错。也许您正在使用某种语法检查,lint ?? 是的,我有一个测试套件设置为在发生某些操作时在开发环境中运行。但是,我知道,这就是悬空元字符? @T145,正如我在答案中提到的,当
用作元字符时,它应该是PATTERNm,n
的形式。例如:\d2,3
匹配 2 到 3 位数字。在/^.*/
中,没有数字,也没有右大括号。
@T145,顺便问一下,您使用什么工具(语法检查器、lint ..)?以上是关于什么是正则表达式中的悬空元字符?的主要内容,如果未能解决你的问题,请参考以下文章