2017-04-26 21 views
0

括弧内の数値のそれぞれに一致する正規表現を作成しようとしています。括弧内の数値と一致する正規表現

ここには、私がテストに使用しているregex101へのリンクがあります。文字列で例えば

:現時点では

は直接NRAS活性化変異を対象とする無承認の治療法はありません。しかしながら、N-Ras活性化は、Raf/MEK/ERK、PI3K/Akt、および他の下流経路の阻害剤に対する感受性を予測する可能性がある。(23274911,22392911,21993244)。 MEK阻害剤であるトラメチニブとコビメチニブは、BRAF V600EおよびV600K突然変異メラノーマについてFDA承認されており、現在、固形腫瘍および血液悪性腫瘍の臨床試験において研究されている。(22663011,252565494)。 MEK阻害剤とPI3K、eIF4A、およびPlk1のような他の下流分子の阻害剤との組み合わせが、インビトロおよびインビボでNRAS突然変異メラノーマにおいて相乗的増殖阻害をもたらすことを示唆するいくつかの前臨床試験がある。

太字で示されている値をそれぞれ一致させたいと思います。私は現在、以下を使用しています。

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

となり、かっこ内の最初の値に一致するようになります。かっこ内に複数の値がある場合はどうすれば拡張できますか?例えば、(22663011,252565494)。ご協力いただきありがとうございます!

+0

'()'の中のすべての値を取り出し、その結果を反復することができます。 https://regex101.com/r/tkQP8z/4多分javaにCSVパーサがあるかもしれません – chris85

答えて

2

()の間のマッチを引っ張ります。何かのように、

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

あなたの正規表現は貪欲です。 '(a、b)不要な(c、d)'のすべてにマッチします。 '。*'(貪欲)を '。*?'(消極的)に変更してください。 – Bohemian

+0

@Bohemianありがとうございます。疲れた。 –

+0

まだ疲れているようです:) – Bohemian

0

私はこのようなパターンを使用します。[\(|, ](\d+)[, \)]

は、ここでは、アクションでそれを参照してください:https://regex101.com/r/hoggh0/1

これは[open brackets or ", "][close brackets or ", "]

間の任意の数を見つけたあなたならば、これは倒れるだろう唯一の方法でありますコメントの間であり角括弧の間ではなく、それらを除外したがっているテキスト内に数字がありました。これにはこれも含まれます。

関連する問題