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

标签 java regex hgsvn

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 表示法的确切细节,而且你的描述实际上相当模糊。 (例如 xxxxxyyyy 是什么?什么是“字符”?)如果您将我链接到此符号的某种规范或详细描述,我可以尝试编写一个正则表达式更绝对正确。

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

关于java - java中hgsv表示法的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44380050/

相关文章:

java - Maven 无法在 jenkins 解析 POM

Java 正则表达式字边界

mysql - 如何在MySQL中按特定模式进行搜索?

mercurial - 如何插入或更改 Mercurial 修订版

svn - Mercurial 和 Subversion : changing, 提交、从 SVN 拉取、推送, "Sorry, can' t 找到 merge 修订版的 svn 父级。”

java - Java插件和浏览器如何在内网验证applet的证书?

javaws 系统属性放宽或删除安全?

java - 为什么我的标记选项卡中显示未知断点?

python - 使用 re.findall 查找前 x 个匹配项