我有以下字符串:“Perl 是唯一一种在 RSA 加密前后看起来相同的语言。” :) 此模式"\\p{javaUpperCase}.*\\."
查找大写字符和句点。它为该字符串返回 true,但如果我删除单词“Perl”,它会给我false
. 这是为什么?还有“RSA”字,也是大写的。
\p{javaUpperCase}
- 代表大写字符
.
是指大写之后的任何字符
*
是贪婪量词,一次或多次
\\.
- 句号。
我哪里错了?为什么它只看开头和结尾?
可能是因为它试图匹配整个字符串。(参考:http ://www.regular-expressions.info/java.html说“重要的是要记住 String.matches() 只有在整个字符串可以匹配时才返回 true”)。根据您使用的正则表达式库/函数,它可能需要对所有内容进行匹配。
如果没有“Perl”,则字符串不会以大写字符开头,因此即使子字符串匹配,整个字符串也不匹配。
尝试.*(\p{javaUpperCase}.*\.).*
匹配子字符串。
.*
两端的添加允许在感兴趣的子字符串的任一端有额外的字符。