String:
50-60*70/50+(1+7-(9+51))+5*9/10
Want:
9 +51
Tried:
(?:\(|\G[\+\*\/-])\K(\d+)
Result:
1 7 9 51
看来您正在使用 PCRE 正则表达式来获取可以在内部数学运算符前面添加的数字(...)
没有内在的()
.
Use
(?:\(|(?!^)\G)\K[+*\/-]?\d+(?=[^()]*\))
See 正则表达式演示 https://regex101.com/r/eS1mF6/1
解释:
-
(?:\(|(?!^)\G)\K
- Find (
或上一次成功匹配的结尾,并省略当前存储在内存中的匹配文本(带有\K
)
-
[+*\/-]?
- 一个或零个运算符
-
\d+
- 一位或多位数字
-
(?=[^()]*\))
- 但仅当后跟零个或多个字符以外的字符时(
and )
直至收盘)
.
请注意,在您的正则表达式中,您省略了数学运算符,因为它们位于之前\K
你可以找到数学运算符后面的数字或(
(每场成功的比赛结束后,这就是为什么你会得到1
, 7
, 9
, 51
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)