如何匹配*RandomName($variable1, $variable2)
这样的字符串
一些约束条件:
*
*
之后的第一个字符必须为0-9, A-Z, a-z, _
中的一个0-9, A-Z, a-z, _, $
)
(
和一个)
括号。要匹配的一些示例字符串
*RandomName($variable1, $variable2)
*RandomName()
*_RandomName($variable1)
*123RandomName($variable1, $variable2, $variable3, $variable4)
这是我到目前为止所拥有的
(^|\s)\*([^;!@#*\[\]{}^|+=:<>"',.~\\&%$-]\S{2,200})\b
以下是对其进行测试的链接:https://regex101.com/r/FxHz7n/1/
答案 0 :(得分:3)
您可以使用
(?:^|\s)\*(\w[\w$]*)\(([^()]*)\)
详细信息
(?:^|\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)
部分,在这种情况下,第二个则不匹配任何内容。