HGSV命名法有一种模式:
xxxxx.yyyy:charactersnumbercharacters
我想在java中创建一个正则表达式并从上面获取所有标记,例如: 它应该有5个令牌: {' xxxxx',' yyyy','字符','数字' ,'字符'}
我使用简单的拆分方法来获取令牌,但我找不到最佳解决方案:
我目前的代码是:
from SConscript.SCons import *
我想在Java中使用Pattern和Matcher。不知道,如何为上述令牌制作正则表达式。
有任何线索如何做到这一点? (即使是单独的字符,数字,字符,我将使用正则表达式)。那么为什么不将REGEX用于整个令牌呢?
我发现link但这是在Python中,我在Java中需要类似的东西。
答案 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符号的确切细节,你的描述实际上很模糊。 (例如xxxxx
和yyyy
是什么?什么是“字符”?)如果你把我链接到某种规范或这种表示法的详细描述,我可以尝试编写一个更加明确正确的正则表达式。
无论如何,我的例子展示了基本的想法。您可能还会看到http://www.regular-expressions.info/brackets.html以获取更多信息。