如何用java模式匹配器解析“p”之后的所有内容?

kqhtkvqz  于 2021-07-13  发布在  Java
关注(0)|答案(4)|浏览(311)

我有一些表格中的数据项:

blahblahblahP26
blahblahblahP82982
blahblahblahP0
blahblahblahP913

我知道java模式匹配器与普通regex有点不同。
我想做的就是抓住p后面的所有东西。不多不少。
怎么做?

68de4m5k

68de4m5k1#

你不需要正则表达式。尝试使用子字符串

String afterP= str.substring(str.indexOf('P')+1); 
         // Add 1 if don't want to include P

如果 P 出现的次数超出了您的使用范围 lastIndexOf('P')

zf9nrax1

zf9nrax12#

Pattern p=Pattern.compile("P[0-9]+");
    Matcher m=p.matcher(inp);
    while(m.find()){
        System.out.println(inp.substring(m.start(), m.end()));
    }

在inp中使用这个regex传递要解析的字符串。它适用于后跟p的变量整数

laawzig2

laawzig23#

我会清理你面前的一切 P . 有了这个你也要尽可能的照顾 P 在最后一个之前:

String afterP = str.replaceAll("^.*P", "");
ojsjcaue

ojsjcaue4#

听起来您已经用其他语言学习了regex,那么这应该足以让您了解javaregex。如果您是regex新手,本教程非常详细。对于你的情况,这应该有用:

Pattern pattern = Pattern.compile(".*?(P.*)"); // question mark is Reluctant quantifiers , it fetch sequence as short as possible. 
    Matcher matcher = pattern.matcher("blahblahblahP26");
    if(matcher.matches()){
        System.out.println(matcher.group(1));
    }

相关问题