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