1

次の文字列があります:「Perl は、RSA 暗号化の前後で同じように見える唯一の言語です。」:) このパターン"\\p{javaUpperCase}.*\\."は大文字とピリオドを探します。その文字列に対して true を返しますが、「Perl」という単語を削除すると、false. 何故ですか?まだ大文字の「RSA」という単語があります。

\p{javaUpperCase}- UpperCase 文字の略で、 UpperCaseが 1 回以上の貪欲な量指定子であり、
.その後のすべての文字を意味します- ピリオド。
*
\\.

どこが間違っていますか?なぜ最初と最後しか見えないのですか?

4

1 に答える 1

2

おそらく、文字列全体を一致させようとしているためです。(参照: http://www.regular-expressions.info/java.htmlは、「String.matches() は、文字列全体が一致する場合にのみ true を返すことを覚えておくことが重要です」と述べています)。使用する正規表現ライブラリ/関数によっては、すべての一致が必要になる場合があります。

"Perl" がないと、文字列は大文字で始まらないため、部分文字列が一致しても文字列全体は一致しません。

.*(\p{javaUpperCase}.*\.).*部分文字列の一致を試みます。

両端に追加すると、対象の.*部分文字列の両端に追加の文字を追加できます。

于 2012-09-01T09:18:00.313 に答える