我试图在空格和冒号之间找到一个字符串。为此,我有下面的regex表达式,它给出了一个“无效组名”错误(在python中也是一样):
(?<content>[^ :]*:$)
相同的表达式在PHP 演示中没有错误。
Javascript表达式:-
var reg = new RegExp("(?<content>[^ :]*):$", "g");`
有人能告诉我为什么要这样吗?
编辑:
示例输入:
DefVariable 変数名:配列「n]
DefVariable 変数名:string
DefVariable 変数名:int
DefVariable 変数名:decimal
DefVariable 変数名:日付
DefVariable 変数名:時間
示例输出:
可能是匹配変数名:的每一行,而不是変数名,任何字符都会出现。
发布于 2015-04-27 22:23:27
您的Regex不正确:
(?<content>[^ :]*:$)
Javascript中不存在(?<group>)
表示法。只有(numbered group)
,(?:non capturing)
和Only。如果我理解得对,你需要这样做:
\s([^ :]*):$
参见演示这里。
发布于 2015-04-27 22:24:56
您不能使用JavaScript正则表达式中的命名捕获组。您必须只使用编号的一个,如下所示:
([^ :]*:)
另外,在regex中使用$
(string/line的末尾)锚点,但是在示例中,在全宽度冒号之后仍然有一些字符。因此,即使删除了命名捕获,regex也将不匹配。
解释:
([^:]*:)
-一个具有字符串的捕获组,它没有空格和全宽度冒号,大小为0或更大,而:
是一个全宽度冒号。$
-字符串/行的末尾。在PHP中,命名群存在.,您可以使用(?<name>...)
或(?'name')
。在Python中,它们也存在,但它们的编写方式略有不同:(?P<tag>...)
。
https://stackoverflow.com/questions/29911658
复制相似问题