什么是正则表达式中的悬空元字符?

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 ..)?

以上是关于什么是正则表达式中的悬空元字符?的主要内容,如果未能解决你的问题,请参考以下文章

悬空元字符 * sparksql

正则表达式判断字符串中包含数字、大写字符、小写字母、特殊符号中的几种怎么判断?

JavaScript中的正则表达式

js中的正则表达式入门

JS中的正则表达式

正则表达式在js中的用法