java.util.regex
有人能告诉我如何使用正则表达式识别任何字符串,例如其中包含一个p字符吗?你能解释一下这是如何评估的吗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字符的字符串(可能为空)
- a P
- 包含非P字符的字符串(可能为空)
^[^P]*P[^P]*$
其中:
匹配字符串的开头^
与P以外的任何字符匹配0次或更多次[^P]*
匹配PP
与P以外的任何字符匹配0次或更多次[^P]*
匹配字符串的结尾$
[^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()
,我认为这也是正确的。