正则表达式匹配括号

时间:2017-04-26 15:50:08

标签: java regex

我正在尝试创建一个正则表达式来匹配括号内的每个数值。

以下是我一直用于测试的regex101的链接。

例如使用String:

  

目前尚无批准的疗法直接针对NRAS激活突变。然而,N-Ras活化可预测对Raf / MEK / ERK,PI3K / Akt和其他下游途径的抑制剂的敏感性(23274911,22392911,21993244)。 MEK抑制剂trametinib和cobimetinib(与vemurafenib联合使用)已获FDA批准用于BRAF V600E和V600K突变黑素瘤,目前正在实体肿瘤和血液系统恶性肿瘤的临床试验中进行研究(22663011,25265494)< / strong>即可。一些临床前研究表明,MEK抑制剂与其他下游分子抑制剂(如PI3K,eIF4A和Plk1)的组合可在体外和体内对NRAS突变黑色素瘤产生协同生长抑制作用(19492075)

我想匹配粗体显示的每个值。我目前正在使用以下

Pattern citationPattern = Pattern.compile("(.?\()(\\d+)");
        Matcher match = citationPattern.matcher(treatmentApproach);

并且能够起来匹配括号中的每个第一个值。如何在括号内有多个值的情况下扩展它。例如(22663011,25265494)。谢谢你的帮助!

3 个答案:

答案 0 :(得分:2)

我只是从文字()之间拉出匹配。像,

Pattern citationPattern = Pattern.compile("\\((.*?)\\)");
Matcher match = citationPattern.matcher(treatmentApproach);
while (match.find()) {
    System.out.println(match.group());
}

答案 1 :(得分:0)

"(\([0-9]+([, ]*[0-9])*\))"可能就是您所需要的。至少它在这里工作:https://regex101.com/r/tkQP8z/5

答案 2 :(得分:0)

我会使用这样的模式:[\(|, ](\d+)[, \)]

在此处查看此行动:https://regex101.com/r/hoggh0/1

这会在[open brackets or ", "][close brackets or ", "]

之间找到任意数字

唯一可以解决的方法是,如果文本中的数字位于注释之间而不是括号之间,并且想要排除它们。这将包括他们。