正则表达式匹配* RandomName($ variable1,$ variable2)

时间:2019-06-06 07:37:45

标签: regex

如何匹配*RandomName($variable1, $variable2)这样的字符串


一些约束条件:

  1. 比赛应以*
  2. 开始
  3. *之后的第一个字符必须为0-9, A-Z, a-z, _中的一个
  4. 比赛中允许使用的字符为0-9, A-Z, a-z, _, $
  5. 比赛应以)
  6. 结尾
  7. 匹配项不必是单个单词。即比赛中允许有空格
  8. 比赛中至少应有一个(和一个)括号。

要匹配的一些示例字符串

  1. *RandomName($variable1, $variable2)
  2. *RandomName()
  3. *_RandomName($variable1)
  4. *123RandomName($variable1, $variable2, $variable3, $variable4)

这是我到目前为止所拥有的 (^|\s)\*([^;!@#*\[\]{}^|+=:<>"',.~\\&%$-]\S{2,200})\b

以下是对其进行测试的链接:https://regex101.com/r/FxHz7n/1/

2 个答案:

答案 0 :(得分:3)

您可以使用

(?:^|\s)\*(\w[\w$]*)\(([^()]*)\)

请参见regex demoregex graph

enter image description here

详细信息

  • (?:^|\s)-字符串或空格的开始(如果接受lookbehinds,则可以替换为(?<!\S)
  • \*-*字符
  • (\w[\w$]*)-第1组:一个单词char,然后是0+个单词或$ chars
  • \(-一个(
  • ([^()]*)-组2:除()以外的0个或多个字符
  • \)-一个)字符。

答案 1 :(得分:2)

一个简单的解决方案是:

\*[A-z0-9_]+\([A-z0-9_$, ]*\)

或者如果您要进行整行/完全匹配:

^\*[A-z0-9_]+\([A-z0-9_$, ]*\)$

如果您具有以下字符串:

*RandomName($variabl)e1, $variable2)

第一个正则表达式将匹配*RandomName($variabl)部分,在这种情况下,第二个则不匹配任何内容。