java中hgsv表示法的正则表达式

时间:2017-06-06 01:27:57

标签: java regex hgsvn

HGSV命名法有一种模式:

xxxxx.yyyy:charactersnumbercharacters

我想在java中创建一个正则表达式并从上面获取所有标记,例如: 它应该有5个令牌: {' xxxxx',' yyyy','字符','数字' ,'字符'}

我使用简单的拆分方法来获取令牌,但我找不到最佳解决方案:

我目前的代码是:

from SConscript.SCons import *

我想在Java中使用Pattern和Matcher。不知道,如何为上述令牌制作正则表达式。

有任何线索如何做到这一点? (即使是单独的字符,数字,字符,我将使用正则表达式)。那么为什么不将REGEX用于整个令牌呢?

我发现link但这是在Python中,我在Java中需要类似的东西。

1 个答案:

答案 0 :(得分: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.
}

这真的很像split,但它更稳定,因为您正在使用该模式事先验证String

请注意,我不知道这是否是您应该使用的完全正确的模式。我不知道你正在谈论的HGSV符号的确切细节,你的描述实际上很模糊。 (例如xxxxxyyyy是什么?什么是“字符”?)如果你把我链接到某种规范或这种表示法的详细描述,我可以尝试编写一个更加明确正确的正则表达式。

无论如何,我的例子展示了基本的想法。您可能还会看到http://www.regular-expressions.info/brackets.html以获取更多信息。