java.util.regex中

时间:2011-01-18 08:53:03

标签: java regex

任何人都可以向我解释如何使用正则表达式来识别包含例如单个P字符的任何字符串吗?您是否也可以解释如何评估它?

编辑:[^P*][^P]*之间有什么区别?

3 个答案:

答案 0 :(得分:6)

包含单个P字符的字符串是:

  • 包含非P字符的(可能为空)字符串
  • a P
  • 包含非P字符的(可能为空)字符串

在正则表达式格式中,这是:

^[^P]*P[^P]*$

其中:

  • ^匹配字符串的开头
  • [^P]*匹配除P,0或更多次以外的任何字符
  • P与P
  • 相匹配
  • [^P]*匹配除P,0或更多次以外的任何字符
  • $匹配字符串的结尾

[^P*][^P]*之间的差异是:

  • [^P*]匹配任何既不是P也不是*
  • 字符
  • [^P]*匹配零个或多个不是P
  • 的字符

*的位置当然很重要。在[]内,*没有任何特殊含义。在[]之外,*表示“将以前的内容与零次或多次匹配”。

答案 1 :(得分:2)

大卫,我想我在one of your previous questions的回答会帮助你。至于如何评估,我不确定你的意思,但你可能想查看Pattern类的API文档。

[^ P *]和[^ P] *之间的差异是:

  • [^ P *]表示“一个不是P和*的字符”
  • [^ P] *表示“零个或多个字符都不是P”

答案 2 :(得分:1)

假设您确实想要检查单个“P”。这是一种非正则表达式。

for(int i = 0 ;i< string.length(); i++){
    if ( string.charAt(i) == 'P' ){
        count++;
    }
}
if ( count == 1 ){
    System.out.println("String contains a single P");
}