簡體   English   中英

Kotlin:無法解析包含多個反斜杠的正則表達式 - 為什么我有一個“未封閉組”?

[英]Kotlin: Can't parse regular expression containing multiple back slashes - Why do I have a "Unclosed group"?

我正在嘗試匹配此字符串示例中“三重轉義”的錨鏈接:

blablabla some text <a href=\\\\\\"#anchor\\\\\\"> some more text

這是我的正則表達式:

href=(\\\\\\\\\\\\)(\\"#.*)(\\\\\\\\\\\\)\\"

如果我在regex101.com上測試它可以工作,但我需要在 Kotlin 中進行過濾,我認為我可以這樣做:

fun findEscapedAnchors(text: String): String {
    val pattern = "href=(\\\\\\)(\"#.*)(\\\\\\)\""
    val regex = pattern.toRegex()
    val matches = regex.find(text)

    // do something with the matches
}

首先,如果我將此字符串粘貼到我的代碼中(在 Android Studio 中),它會自動轉義更多,但它不起作用。 如果我編輯它以匹配上面的字符串,它會抱怨有一個未關閉的組。 我想我可以把它放在三重引號中,不必轉義字符,但這也失敗了。 我究竟做錯了什么?

我自己弄清楚了:原始字符串(三重引號)確實是可行的方法,但Regex顯然仍然需要字符串中的字符轉義。 之前,我將它們移除,因為我認為原始字符串就是這樣工作的,但我錯了。 所以它現在可以使用:

val regex = """href=(\\\\\\)(\"#.*)(\\\\\\)\"""".toRegex()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM