如何解析';P';使用java模式匹配器?

如何解析';P';使用java模式匹配器?,java,regex,pattern-matching,Java,Regex,Pattern Matching,我有一些表格中的数据项: blahblahblahP26 blahblahblahP82982 blahblahblahP0 blahblahblahP913 我知道java模式匹配器与普通正则表达式有点不同 我想做的就是抓住p之后的所有东西。不多也不少 如何做到这一点?您不需要正则表达式。尝试使用 如果p出现多次,则可以使用lastIndexOf('p')不需要正则表达式。尝试使用 如果p出现的次数超过了您可以使用lastIndexOf('p')的次数,我会清除p之前的所有内容。这样,您还可

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

blahblahblahP26
blahblahblahP82982
blahblahblahP0
blahblahblahP913
我知道java模式匹配器与普通正则表达式有点不同

我想做的就是抓住p之后的所有东西。不多也不少


如何做到这一点?

您不需要正则表达式。尝试使用


如果
p
出现多次,则可以使用
lastIndexOf('p')
不需要正则表达式。尝试使用


如果
p
出现的次数超过了您可以使用
lastIndexOf('p')
的次数,我会清除
p
之前的所有内容。这样,您还可以处理最后一个之前可能出现的
P

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

我会清除你
p
之前的所有内容。这样,您还可以处理最后一个之前可能出现的
P

String afterP = str.replaceAll("^.*P", "");
在inp中使用此正则表达式传递要解析的字符串。它适用于后跟P的变量整数


在inp中使用此正则表达式传递要解析的字符串。它适用于变量integer后跟P

听起来您已经用其他语言学习了正则表达式,那么您应该足够了解java正则表达式了。如果你是新的正则表达式,这是非常详细的。 对于您的情况,这应该有效:

    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));
    }

听起来您已经用其他语言学习了正则表达式,那么您就可以学习java正则表达式了。如果你是新的正则表达式,这是非常详细的。 对于您的情况,这应该有效:

    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));
    }

您必须首先使用
contains()
检查字符串是否包含
P
。否则您将得到一个错误(
indexOf
将返回-1),它始终包含
P
,但后面的数字长度可变,有时短,有时长。它还好吗?@Yamada_TarōYa。。在这种情况下,这个答案是正确的OK@Yamada_Tarō,你的电话号码有多长?如果长度太长,则无法将number
String
转换为
biginger
。您必须先使用
contains()
检查字符串是否包含
P
。否则您将得到一个错误(
indexOf
将返回-1),它始终包含
P
,但后面的数字长度可变,有时短,有时长。它还好吗?@Yamada_TarōYa。。在这种情况下,这个答案是正确的OK@Yamada_Tarō,你的电话号码有多长?如果它太长,您无法将数字
String
转换为
biginger
。您的
blahblahblah
中是否有
P
,或者是
P
仅在最后一个数字之前?您的
blahblahblah
中是否有
P
或是
P
仅在最后一个数字之前?