一个字符串是这样的:s=“van Bakel,H., Nislow,C., Blencowe,B.J. and Hughes,T.R. Most ‘‘dark matter’’ transcripts are associated with known genes. PLoS Biol., 8, e1000371.”
我相匹配出这个字符串s1=“Most ‘‘dark matter’’ transcripts are associated with known genes”
s1的前后都不固定,“PLoS Biol”这是某个期刊的名称,开头是都是大写的,我想从s中匹配出s1,请问正则表达式该如何写?

解决方案 »

  1.   

    (?<=T.R. \b).+\b(?=\bPLoS\b)
    但是如果前后都不固定 怎么写我也不知道,零宽断言他总得有个对应的表达式啊。其实最简单的便是匹配你的s1,也就是“Most ‘‘dark matter’’ transcripts are associated with known genes”  自然就获得了这个字符串,但是我不明白你到底要做啥。
      

  2.   

    “Most ‘‘dark matter’’ transcripts are associated with known genes” 是某个期刊的名称,也是我想得到的,我这有很多像s这种字符串,我想从s中通过正则匹配得到像s1这种期刊的名称,想写个正则,从s中匹配出s1,现在只知道s1后是个英文句号+大写字母开头的字符串,s1的开头是个英文句号,不知该怎么写?
      

  3.   

    for example
    String s="van Bakel,H., Nislow,C., Blencowe,B.J. and Hughes,T.R. Most ‘‘dark matter’’ transcripts are associated with known genes. PLoS Biol., 8, e1000371.";
    Pattern p = Pattern.compile("(?<=[.]\\s)[A-Z].*?(?=[.]\\s[A-Z])"); //(.空格开始)+大写字母+任意字符+(.空格+大写字母结束)
    Matcher m = p.matcher(s);
    while (m.find()) {
        System.out.println(m.group());
    }
      

  4.   

    NAR这篇paper的参考文献有些问题,写的这个漏了年份(52也漏了年份),和50、49格式比一下能看出来。这种情况就是作者写错了,不管这种错误情况它就好了。 deng