正则表达式查询

时间:2015-02-14 12:12:52

标签: java regex

我有几句话,但我只希望获得ID之后的内容。我可以知道正则表达式是做什么的吗?

10460923_4|72 74|DHF 
10460923_6|24 57|IgM capture enzyme - linked immunoassay 
10460923_7|26 28|DHF 
10460923_14|0 12|IgM antibodies 
10467781_2|157 161|DEN - 1 
10467781_5|3 8|DEN 1 - 4 
10467781_6|155 160|DEN 1 - 4 
10469270_1|9 38|transforming growth factor - beta 1 
10469270_3|34 63|Transforming Growth Factor - beta 1 
10469270_3|65 73|TGF - beta1 
10469270_4|5 26|TGF - beta1 - specific mRNA 
10469270_5|27 42|TGF - beta1 protein 
10469270_6|20 35|TGF - beta1 protein 
10469270_7|41 49|TGF - beta1 
10469270_9|4 12|TGF - beta1 

2 个答案:

答案 0 :(得分:2)

您只需使用String#substring()作为

即可
String str = "10469270_9|4 12|TGF - beta1";
System.out.println(str.substring(str.lastIndexOf('|') + 1)); // TGF - beta1

如果您想保存所有令牌,请使用String#split()作为

    String str = "10460923_4|72 74|DHF";
    System.out.println(str.split("\\|")[2]); // DHF

答案 1 :(得分:0)

你应该选择Ravi的解决方案,这个解决方案至少可以维护,而且可能更有效。

如果由于某种原因你确实需要正则表达式,则应该执行以下操作:

(?<=\|)[^|]*

如此regex101所示。不要忘记将Java String中的\翻倍!

(?<=\|)positive look-behind,并在匹配的字符串前检查|
[^|]是所有字符的集合,但| *是一个贪婪的0-n量词 因此,(?<=\|)[^|]*会尽可能多地匹配|之后的非|个字符。

不要将它与全局g标志一起使用,它依赖于第一个符合|后跟您想要的数据。