如何定义匹配字符串的c 11 / ECMAScript兼容正则表达式语句:
-
包含一对封闭的圆括号,其中包含长度大于0的字母数字字符串 - 例如正则表达式
"\(\w+\)"
,它正确匹配"(abc_123)"
并忽略不正确的"(abc_123"
,"abc_123)"
和"abc_123"
. 但是,上面的表达式不会忽略包含多个 balancer /不 balancer 包围的输入字符串 - 我想从匹配的结果中排除"((abc_123)"
,"(abc_123))"
和"((abc_123))"
. -
或单个字母数字单词,没有任何不 balancer 括号 - 例如正则表达式
"\w+"
正确匹配"abc_123"
,但遗憾的是错误地与"(abc_123"
,"abc_123)"
,"((abc_123)"
,"(abc_123))"
和"((abc_123))"
匹配...
为清楚起见,上述每个测试用例所需的匹配项是:
-
"abc_123"
=匹配, -
"(abc_123)"
=匹配, -
"(abc_123"
=不匹配, -
"abc_123)"
=不匹配, -
"((abc_123)"
=不匹配, -
"(abc_123))"
=不匹配, -
"((abc_123))"
=不匹配 .
我一直在玩实现http://www.regular-expressions.info/conditional.html建议的IfThenElse格式,但还没有走得太远......有没有办法限制特定组的出现次数[例如 "(\(){0,1}"
匹配零或一个左手圆括号],并将前一组的重复次数传递给后一组[比如 "num\1"
等于 "("
括号出现在 "(\(){0,1}"
中的次数,然后我可以将其传递给相应的右括号小组, "(\)){num\1}"
说...]
1 回答
我想,不是你想要的,而且非常优雅,但......
使用"or"(
|
),您应该获得基于"\\(\\w+\\)|\\w+"
的优于零的解决方案 .完整的例子如下