1

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

\p{javaUpperCase}- 代表大写字符
.是指大写之后的任何字符
*是贪婪量词,一次或多次
\\.- 句号。

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

4

1 回答 1

2

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

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

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

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

于 2012-09-01T09:18:00.313 回答