[英]Why is java giving “Unclosed Group” error for this regular expression?
[英]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.