我正在尝试在空格和冒号之间找到一个字符串。为此,我有以下正则表达式,它给了我一个'无效的组名称'错误(在python中也一样):
(?<content>[^ :]*:$)
Same Expression在PHP中没有错误 Demo
Javascript表达式: -
var reg = new RegExp("(?<content>[^ :]*):$", "g");`
有谁可以告诉我为什么会这样?
修改
示例输入:
DefVariable 変数名:配列「n]
DefVariable 変数名:string
DefVariable 変数名:int
DefVariable 変数名:decimal
DefVariable 変数名:日付
DefVariable 変数名:時間
示例输出:
可以匹配来自每一行的変数名而不是変数名任何角色都会来。
答案 0 :(得分:0)
您的正则表达式不正确:
(?<content>[^ :]*:$)
Javascript中不存在(?<group>)
符号。只有(numbered group)
,(?:non capturing)
和外观。如果我理解正确,你需要这个:
\s([^ :]*):$
请参阅演示here。
答案 1 :(得分:0)
您无法使用named capturing groups in JavaScript regex。您将只需使用编号,如下所示:
([^ :]*:)
此外,您在正则表达式中使用$
(字符串/行的结尾)锚点,但在示例中,全宽冒号后仍有一些字符。因此,即使删除了命名捕获,正则表达式也不会匹配。
说明:
- 文字空间([^:]*:)
- 一个捕获组,其字符串没有空格和全宽冒号,大小为0或更大:
,全宽冒号$
- 字符串/行的结尾。在PHP中,named groups存在。,您可以使用(?<name>...)
或(?'name')
。在Python中,它们也存在,但它们的编写方式有点不同:(?P<tag>...)