Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java.util.regex_Java_Regex - Fatal编程技术网

java.util.regex

java.util.regex,java,regex,Java,Regex,有人能告诉我如何使用正则表达式识别任何字符串,例如其中包含一个p字符吗?你能解释一下这是如何评估的吗 编辑:[^p*]和[^p]*之间有什么区别 包含单个p字符的字符串是: 包含非P字符的字符串(可能为空) a P 包含非P字符的字符串(可能为空) 在正则表达式格式中,这是: ^[^P]*P[^P]*$ 其中: ^匹配字符串的开头 [^P]*与P以外的任何字符匹配0次或更多次 P匹配P [^P]*与P以外的任何字符匹配0次或更多次 $匹配字符串的结尾 [^p*]和[^p]*之间的区别是

有人能告诉我如何使用正则表达式识别任何字符串,例如其中包含一个p字符吗?你能解释一下这是如何评估的吗


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

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

  • 包含非P字符的字符串(可能为空)
  • a P
  • 包含非P字符的字符串(可能为空)
在正则表达式格式中,这是:

^[^P]*P[^P]*$
其中:

  • ^
    匹配字符串的开头
  • [^P]*
    与P以外的任何字符匹配0次或更多次
  • P
    匹配P
  • [^P]*
    与P以外的任何字符匹配0次或更多次
  • $
    匹配字符串的结尾
[^p*]
[^p]*
之间的区别是:

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

*
的位置在这里当然很重要。在
[]
内部,
*
没有任何特殊含义。在
[]
之外,
*
的意思是“将前面的内容匹配零次或多次”。

大卫,我想我的答案至少能帮你解决这个问题。至于它是如何评估的,我不确定您的意思,但您可能想查看该类的API文档

[^p*]和[^p]*之间的区别是:

  • [^P*]表示“一个非P字符和*”
  • [^P]*表示“零个或多个非P字符”

    • 假设您真的想检查单个“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");
      }
      
      for(int i=0;i
      请想一个更好的问题标题。这在正则表达式检查器上似乎不起作用。。?在这里检查:那么您的正则表达式chaecker有问题,@david:-)我建议您在唯一真正重要的检查器上检查它,Java程序。[^P*]和[^P]*之间的区别是什么?^首字母的相关性是什么?@david robers--请先看一下。嗨,我可以;I don’我也不会让你的答案在正则表达式检查器上工作。我正在看API,但它没有;t真的不能帮助你理解正则表达式引擎是如何工作的。。。也就是说,它是否从字符串的开头开始?通常是的,它确实从字符串的开头开始,随后对Matcher.find()的每次调用都将搜索下一个匹配项。请分享您正在使用的正则表达式检查器的名称或种类,以便我们能为您提供更多帮助:-)。string.contains(“P”)可能是一个稍微简化的版本:-)好吧,我说得太快了:您的确保只有一个P。我收回我的评论。别担心:-)哦,我以为你说的是在for循环中使用
      containS()
      ,而不是
      charAt()
      ,我认为这也是正确的。