0

HGSV 命名法には次のパターンがあります。

xxxxx.yyyy:charactersnumbercharacters

Javaで正規表現を作成し、上記のすべてのトークンを取得したいと思います。たとえば、5つのトークンが必要です: { 'xxxxx', 'yyyy', 'characters', 'number' , 'characters'}

単純な分割方法を使用してトークンを取得しましたが、最適な解決策が見つかりません。

私の現在のコードは次のとおりです。

String hgsv = "BRAF.p:V600E";
String[] tokens = hgsv.split(".");
this.symbol = tokens[0];
String type = tokens[1].split(":")[0];

Java で Pattern と Matcher を使用したいと考えています。上記のトークンの正規表現を作成する方法がわかりません。

それを行う方法の手がかりはありますか?(文字、数字、文字を区切るためにも、正規表現を使用します)。したがって、トークン全体に REGEX を使用しないのはなぜですか。

リンクを見つけましたが、これは Python のものです。Java でも同様のものが必要です。

4

1 に答える 1

1

おそらくあなたが探しているのは、次のようにキャプチャ グループを使用することだと思います。

String  s = "BRAF.p:V600E";
Pattern p = Pattern.compile("(\\w+)\\.(\\w+):([a-zA-Z]+)(\\d+)([a-zA-Z]+)");
Matcher m = p.matcher(s);
if (m.matches()) {
    String[] parts = {m.group(1),
                      m.group(2),
                      m.group(3),
                      m.group(4),
                      m.group(5)};
    // Prints "[BRAF, p, V, 600, E]"
    System.out.println(Arrays.toString(parts));
} else {
    // The input String is invalid.
}

これは本当に a によく似ていますが、パターンを使用してを事前splitに検証しているため、より安定しています。String

それがあなたが使用すべき正しいパターンであるかどうかはわかりません。あなたが話しているHGSV表記の正確な詳細はわかりません.あなたの説明は実際にはかなり曖昧です. (eg xxxxxand とはyyyy何ですか? 「文字」とは何ですか?) この表記法の何らかの仕様または詳細な説明にリンクしていただければ、より確実に正しい正規表現を書くことができます。

とにかく、私の例は基本的な考え方を示しています。詳細については、 http://www.regular-expressions.info/brackets.htmlも参照してください。

于 2017-06-06T01:47:26.070 に答える