サンディープDhami:
私の要件は、正規表現を使用して文字列にURLをチェックすることです。私は何をやっていると、文字列はURLが含まれているかどうかのパターンとMatcherの発見を使用しています
val pattern = Pattern.compile(HyperlinkParser.validRegex.toString())
val matcher = pattern.matcher(htmlParsedMessage) //"abcd www.google.com def"
while (matcher.find()) {
val url = matcher.group()//contains the required url but it returns "www.".Expected "www.google.com"
val indicesPair = Pair(matcher.start(), matcher.end())
hyperlinkStartEndIndicesList.add(indicesPair)
}
matcher.reset()
どこHyperlinkParser.validRegex
で
private const val regularExpression = "(?:(?:https?|ftp|file):|www.|ftp.)(?:([-A-Z0-9+&@#/%=~_|\$?!:,.]*)|[-A-Z0-9+&@#/%=~_|\$?!:,.])*(?:([-A-Z0-9+&@#/%=~_|\$?!:,.]*)|[A-Z0-9+&@#/%=~_|\$])"
val validRegex = Regex(regularExpression,RegexOption.IGNORE_CASE)
私は、URL「www.google.com」を期待していますが、それは戻っている「WWWを。」。
すべてのアイデアはどのような問題になることができます。すべてのヘルプは大幅に受け入れられるだろう。
アンドレアス:
ドキュメントのtoString()
方法Regex
:
この正規表現、すなわちの文字列表現を返しパターンこの正規表現のを。
同じパターン文字列から構成された別の正規表現が異なっていてもよいことに注意してくださいオプションをして、異なる文字列にマッチします。
それはと同じであることを意味するregularExpression
文字列をなしIGNORE_CASE
オプション。
だから、あなたが行うときval pattern = Pattern.compile(HyperlinkParser.validRegex.toString())
、あなたは、大文字と小文字を区別しないオプションを失い、そして理由ですgoogle.com
あなたの正規表現のみ一致するため、一致しませんA-Z
。
その行を次のように変更します
val pattern = HyperlinkParser.validRegex.toPattern()
そのためには、動作するドキュメントのはtoPattern
言います: