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

“如何”\\p{javaUpperCase}.\\\\\”;模式真的有效吗?,java,regex,Java,Regex,我有以下字符串: “Perl是唯一在RSA加密前后看起来相同的语言。”:) 此模式“\\p{javaUpperCase}.\\.\”查找大写字符和句点。对于该字符串,它返回true,但如果我删除单词“Perl”,它将给出false。为什么呢?还有“RSA”这个词,也是大写的 \p{javaUpperCase}-表示大写字符 表示该大写字母之后的任何字符 *是贪婪的量词,一次或多次 \\.-期间。 我错在哪里?为什么它只看开头和结尾?可能是因为它试图匹配整个字符串。(Reference:says“

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

\p{javaUpperCase}
-表示大写字符
表示该大写字母之后的任何字符
*
是贪婪的量词,一次或多次
\\.
-期间。


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

可能是因为它试图匹配整个字符串。(Reference:says“记住String.matches()只有在整个字符串都可以匹配时才返回true,这一点很重要”)。根据您使用的正则表达式库/函数的不同,它可能需要对所有内容进行匹配

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

请尝试
*(\p{javaUpperCase}.*\..*.
以匹配子字符串


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

您如何处理该模式?仅供参考,
*
表示零或多个,而不是一个或多个。如果您试图进行子字符串匹配,可能最好使用
匹配器。查找(…)
而不是
匹配器。匹配(…)
。。。尤其是在比赛可能失败的情况下。