如何“\\ p {javaUpperCase}。* \\。”模式真的有效吗?

时间:2012-09-01 09:13:53

标签: java regex

我有以下字符串: “在RSA加密之前和之后,Perl是唯一看起来相同的语言。” :) 此模式"\\p{javaUpperCase}.*\\."查找大写字符和句点。它为该字符串返回true,但如果我删除单词“Perl”,它将给我false。这是为什么?还有“RSA”字样,也是大写字母。

\p{javaUpperCase} - 代表UpperCase字符
.表示在UpperCase之后的任何字符 *是贪心量词,一次或多次 \\. - 期间。

我哪里错了?为什么它只在开头和结尾看?

1 个答案:

答案 0 :(得分:2)

可能是因为它试图匹配整个字符串。 (参考:http://www.regular-expressions.info/java.html“重要的是要记住,如果整个字符串可以匹配”),String.matches()只返回true。根据您使用的正则表达式库/函数,可能需要匹配所有内容。

如果没有“Perl”,字符串不会以大写字符开头,所以即使子字符串匹配,整个字符串也不会。

尝试使用.*(\p{javaUpperCase}.*\.).*来匹配子字符串。

两端添加的.*允许在感兴趣的子字符串的任一端添加额外的字符。