【问题标题】:Script Header Regex?脚本头正则表达式?
【发布时间】:2015-03-03 14:13:13
【问题描述】:

我正在尝试制作一个正则表达式来识别复杂的脚本声明,例如:

script void bar(type foo, type baz)

两个“类型”都在同一个捕获组中

目前,我有正则表达式:

(script)\s(\w*)\s(\w*)\((?:([a-z|A-Z]+)\s\w+)?\)

这可以识别捕获组,如链接所示。 https://regex101.com/r/nB3oL3/3

  1. [0-6]script
  2. [7-11]void
  3. [12-15]bar
  4. [16-20]type

它还可以识别字符串

script void bar(type foo)
script void bar()

这正是我想要的,除了它不会识别任何附加参数,例如“type baz”

script void bar(type foo, type baz)

我正在努力寻找一种递归识别“类型”的方法

", 输入 baz"
不添加额外的捕获组(如果这甚至可能?)。我也不确定是否需要使用分支重置来获得这种效果?

因为我这样做是为了崇高,我认为它必须使用 python 正则表达式引擎。

任何帮助将不胜感激!

  • 克里斯

【问题讨论】:

  • 一个简短的说明 - 我刚刚注意到这只能识别小写,这不是我的意图,但很容易修复

标签: regex


【解决方案1】:

在支持递归正则表达式的引擎中,^(script)\s(\w+)\s(\w+)\((?:([a-zA-Z]+)\s\w+(?:,\s)?)*\)$ 应该可以工作,但从 this 的帖子中可以看出,递归实现并未得到广泛实施。 (作为对此状态的评论,存在例如python的插件来支持这一点。)

【讨论】:

  • 这很好,但似乎只捕获最后输入的类型
  • script void bar(type foo, type baz) 而不是两者——或者该网站是缺乏对递归正则表达式支持的一个例子?
  • 据我推测该网站是一个缺乏支持的例子,一有机会我就会安装python插件并直接在解释器中尝试。
猜你喜欢
  • 2011-11-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-25
  • 2019-03-27
  • 2012-03-06
  • 2011-10-17
  • 2013-06-06
相关资源
最近更新 更多