Regex 如何为它生成正则表达式?

Regex 如何为它生成正则表达式?,regex,pcre,autoit,Regex,Pcre,Autoit,我想创建一个正则表达式来匹配如下字符串: Function_Name ( 'parameters' ) Function Description 因此,我得到了名称、参数和描述。我正在编写Python正则表达式,但我认为将其传递给PHP或Perl并不困难 我的猜测是这样的,但我不确定第二个*,它是否能正确捕获EOL (\w+)\s\(\s'\s(.+)\s'\s\)\s(.*) 假设参数由分隔,下面的正则表达式应该适合您 (\w+)\s+\(([^\)]+)\s+(.+) 子组1>函数名

我想创建一个正则表达式来匹配如下字符串:

Function_Name ( 'parameters' ) Function Description

因此,我得到了名称、参数和描述。

我正在编写Python正则表达式,但我认为将其传递给PHP或Perl并不困难

我的猜测是这样的,但我不确定第二个
*
,它是否能正确捕获EOL

(\w+)\s\(\s'\s(.+)\s'\s\)\s(.*)

假设参数由
分隔,
下面的正则表达式应该适合您

(\w+)\s+\(([^\)]+)\s+(.+)
子组1>函数名
子组2>参数

子组3>功能描述

如果您正在使用AutoIt,如标签所示,模式应为PCRE

(\w+)\s*\(\s*([^)]+)\s*\)\s*(.+)
这是Shiplu建议的模式的稍微修改版本。 它有可选的空格,因此它们不会在匹配中结束,右括号也是如此。也不需要对字符集中的括号进行转义

  • 开始捕获组1
  • \w+
    匹配一个或多个单词字符(字母数字和下划线)
  • 关闭捕获组1
  • \s*
    匹配零个或多个空白字符
  • \(
    匹配开场白)
  • \s*
    匹配零个或多个空白字符
  • 开始捕获组2
  • [^]+
    匹配一个或多个非右括号的字符
  • 关闭捕获组2
  • \s*
    匹配零个或多个空白字符
  • \)
    匹配右括号
  • \s*
    匹配零个或多个空白字符
  • 开始捕获组3
  • +
    匹配一个或多个非空白字符
  • 结束捕获组3

哪种语言?Perl正则表达式?sed正则表达式?PHP正则表达式?对于多个参数,它看起来是什么样的?我认为它没有太大的区别,是吗?它会影响你的答案的准确性。不同的语言支持不同的正则表达式特性。此外,多个参数的格式会影响正则表达式捕获该部分的方式。当您意识到需要添加更多信息,而不是在注释中逐点添加信息时。如果答案对解决问题有帮助,请不要忘记接受。您确定要捕获{}吗?从perl我只知道()。您还忘了用(\s+)去掉内部空白。这是一个更好的答案,它有更好的子组。@K7rim这似乎捕获了任务的本质(在源代码中声明的函数)。只需检查它是否没有捕获源代码的其他内容(不是函数)具有相同结构的!@Shiplu这没问题,但经过一次修改后,第二个子组应该是这样的([^)]+)一个或多个字符的+符号,因此描述中可能有类似“不”的字符或引号,因此我将第三个子组替换为(+)@heltonbiker我需要它来捕获具有上述语法的自动完成api文件谢谢您的警告!