我有这个正则表达式:
select (case when amount < 0 then payer else payee end) as payee,
(case when amount < 0 then payee else payer end) as payer,
abs(amount)
from (select least(payee, payer) as payee, greatest(payee, payer) as payer,
sum(case when payee = least(payee, payer) then amount else - amount end) as amount
from t
group by least(payee, payer), greatest(payee, payer)
) t;
匹配字符串的括号和括号内的内容。如果括号前没有_,我希望它只匹配。
例如,我想在本例中匹配(文本):
这是一些随机(文本)
但我不希望它与此示例中的任何内容匹配:
这是另一个(文本)
我该怎么做?
答案 0 :(得分:2)
您可以使用 负面反对 :
function f1() {
return 1
+2
}
console.log(f1());
正如此regex101
所示就像@SebastianProske所说的那样,没有理由让 (?<!_)\([^\(]*\)
# ^ negative lookbehind
贪婪:因为它永远不会与结束括号相匹配。所以我贪得无厌。
答案 1 :(得分:1)
添加否定的lookbehind:(?<!_)
检查你所说的内容( no“_”在之前)。
还有一句话:两个括号之间的内容应该是任何序列 除了关闭之外的其他字符。
所以整个正则表达式应该是:
(?<!_)\([^\)]*\)