我有一些表格中的数据项:
blahblahblahP26 blahblahblahP82982 blahblahblahP0 blahblahblahP913
我知道java模式匹配器与普通regex有点不同。我想做的就是抓住p后面的所有东西。不多不少。怎么做?
68de4m5k1#
你不需要正则表达式。尝试使用子字符串
String afterP= str.substring(str.indexOf('P')+1); // Add 1 if don't want to include P
如果 P 出现的次数超出了您的使用范围 lastIndexOf('P')
P
lastIndexOf('P')
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的变量整数
laawzig23#
我会清理你面前的一切 P . 有了这个你也要尽可能的照顾 P 在最后一个之前:
String afterP = str.replaceAll("^.*P", "");
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)); }
4条答案
按热度按时间68de4m5k1#
你不需要正则表达式。尝试使用子字符串
如果
P
出现的次数超出了您的使用范围lastIndexOf('P')
zf9nrax12#
在inp中使用这个regex传递要解析的字符串。它适用于后跟p的变量整数
laawzig23#
我会清理你面前的一切
P
. 有了这个你也要尽可能的照顾P
在最后一个之前:ojsjcaue4#
听起来您已经用其他语言学习了regex,那么这应该足以让您了解javaregex。如果您是regex新手,本教程非常详细。对于你的情况,这应该有用: