HGSV 命名法有一个模式:
xxxxx.yyyy:字符数字符
我想在java中创建一个正则表达式并从上面获取所有标记,例如: 它应该有 5 个 token : { 'xxxxx', 'yyyy', '字符', '数字', '字符'}
我使用了简单的拆分方法来获取 token ,但我没有找到最佳解决方案:
我当前的代码是:
String hgsv = "BRAF.p:V600E";
String[] tokens = hgsv.split(".");
this.symbol = tokens[0];
String type = tokens[1].split(":")[0];
我想在Java中使用Pattern和Matcher。不知道如何为上述标记创建正则表达式。
知道如何做到这一点吗? (即使是分隔字符、数字、字符,我也会使用正则表达式)。那么为什么不对整个 token 使用 REGEX。
我找到了link但这是Python中的,我需要Java中的类似。
最佳答案
我认为您可能正在寻找的是使用捕获组,如下所示:
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.
}
这实际上很像分割
,但它更稳定,因为您事先使用该模式来验证String
。
请注意,我不知道这是否是您应该使用的正确模式。我不知道你所说的 HGSV 表示法的确切细节,而且你的描述实际上相当模糊。 (例如 xxxxx
和 yyyy
是什么?什么是“字符”?)如果您将我链接到此符号的某种规范或详细描述,我可以尝试编写一个正则表达式更绝对正确。
无论如何,我的例子展示了基本思想。您可能还会看到http://www.regular-expressions.info/brackets.html了解更多信息。
关于java - java中hgsv表示法的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44380050/