首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正则表达式给出无效的组错误

正则表达式给出无效的组错误
EN

Stack Overflow用户
提问于 2015-04-28 06:14:23
回答 2查看 928关注 0票数 0

我试图在空格和冒号之间找到一个字符串。为此,我有下面的regex表达式,它给出了一个“无效组名”错误(在python中也是一样):

代码语言:javascript
复制
(?<content>[^ :]*:$)

这是RegexDemo

相同的表达式在PHP 演示中没有错误。

Javascript表达式:-

代码语言:javascript
复制
var reg = new RegExp("(?<content>[^ :]*):$", "g");`

有人能告诉我为什么要这样吗?

编辑:

示例输入:

代码语言:javascript
复制
DefVariable   変数名:配列「n]
DefVariable  変数名:string
DefVariable   変数名:int
DefVariable   変数名:decimal
DefVariable   変数名:日付
DefVariable   変数名:時間

示例输出:

可能是匹配変数名:的每一行,而不是変数名,任何字符都会出现。

EN

回答 2

Stack Overflow用户

发布于 2015-04-28 06:23:27

您的Regex不正确:

代码语言:javascript
复制
(?<content>[^ :]*:$)

Javascript中不存在(?<group>)表示法。只有(numbered group)(?:non capturing)和Only。如果我理解得对,你需要这样做:

代码语言:javascript
复制
\s([^ :]*):$

参见演示这里

票数 0
EN

Stack Overflow用户

发布于 2015-04-28 06:24:56

您不能使用JavaScript正则表达式中的命名捕获组。您必须只使用编号的一个,如下所示:

代码语言:javascript
复制
 ([^ :]*:)

另外,在regex中使用$ (string/line的末尾)锚点,但是在示例中,在全宽度冒号之后仍然有一些字符。因此,即使删除了命名捕获,regex也将不匹配。

解释:

    • 文字空间

  • ([^:]*:) -一个具有字符串的捕获组,它没有空格和全宽度冒号,大小为0或更大,而是一个全宽度冒号。
  • $ -字符串/行的末尾。

见演示

在PHP中,命名群存在.,您可以使用(?<name>...)(?'name')。在Python中,它们也存在,但它们的编写方式略有不同:(?P<tag>...)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29911658

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档