这是我的正则表达式。我想匹配一个或两个参数的函数
[a-z0-9\%\. ]+\(([0-9\.]+|(\[{1}[a-zA-Z0-9\.% ]+[^ ,\)\(]+\]{1}))([\,]{0,1}([0-9\.]+|\[{1}[a-zA-Z0-9\.% ]+[^ ,\)\(]+\]{1})){0,1}\)
大部分时间都可以完成工作,但是这种情况失败了:
int(123[hello])
介于两者之间的123
会导致匹配失败,但不会失败。我在这里做错了什么?
答案 0 :(得分:0)
使用RegExp评估程序为Firefox使用“Developer Assistant”插件,我发现第1组,第3组和第4组是匹配的。
1 = 123
3 =你好
4 =你好
我看到int(
部分与[a-z0-9\%\. ]+\(
然后,123
与以下内容匹配,特别是第一部分(为清晰起见而添加了空白)
(
[0-9\.]+| (\[{1}[a-zA-Z0-9\.% ]+[^ ,\)\(]+\]{1})
)
[hello]
部分(但不是)
)与第三部分(从\[{1}[
开始)匹配:
([\,] {0,1}
([0-9\.]+| \[{1}[a-zA-Z0-9\.% ]+[^ ,\)\(]+\]{1} )
){0,1} \)
答案 1 :(得分:0)
您可以使用:
([a-z0-9\%\. ]+\((?:[0-9\.]+|\w*(?:\[[a-zA-Z0-9\.% ]+[^ ,\)\(?:]+\]))(?:[\,]?(?:[0-9\.]+|\w*\[[a-zA-Z0-9\.% ]+[^ ,\)\(]+\]))?\))
<强> DEMO 强>
您的代码出现问题:
您的代码不足以符合您的要求。
我将其更新为:
答案 2 :(得分:0)
强制要求昏迷:
而不是:
[a-z0-9\%\. ]+\(([0-9\.]+|(\[{1}[a-zA-Z0-9\.% ]+[^ ,\)\(]+\]{1}))([\,]{0,1}([0-9\.]+|\[{1}[a-zA-Z0-9\.% ]+[^ ,\)\(]+\]{1})){0,1}\)
做的:
[a-z0-9\%\. ]+\(([0-9\.]+|(\[{1}[a-zA-Z0-9\.% ]+[^ ,\)\(]+\]{1}))([\,]([0-9\.]+|\[{1}[a-zA-Z0-9\.% ]+[^ ,\)\(]+\]{1})){0,1}\)
// here __^
你也可以做一些简化:
[a-z0-9%. ]+\(([0-9.]+|(\[[a-zA-Z0-9\.% ]+[^ ,)(]+\]))(,([0-9.]+|\[[a-zA-Z0-9.% ]+[^ ,)(]+\]))?\)
为了便于阅读:
[a-z0-9%. ]+\(
(
[0-9.]+
|
(
\[[a-zA-Z0-9\.% ]+[^ ,)(]+\]
)
)
(
,
(
[0-9.]+
|
\[[a-zA-Z0-9\.% ]+[^ ,)(]+\]
)
)?
\)