1
我試圖匹配[
和]
。 但是當我們也使用這兩個正則表達式時, 如何編寫一些模式來匹配兩個括號? 使用\[
不起作用,因爲它給了編譯器錯誤以下行:如何匹配Regex Scala中的方括號?
regex(new Regex("([^.#; \\t\\r\n(){}\[\]',`\"][^; \\t\\r\\n(){}\[\]',`\"]*|[.][^; \\t\\r\\n(){}\[\]',`\"]+)"))
我試圖匹配[
和]
。 但是當我們也使用這兩個正則表達式時, 如何編寫一些模式來匹配兩個括號? 使用\[
不起作用,因爲它給了編譯器錯誤以下行:如何匹配Regex Scala中的方括號?
regex(new Regex("([^.#; \\t\\r\n(){}\[\]',`\"][^; \\t\\r\\n(){}\[\]',`\"]*|[.][^; \\t\\r\\n(){}\[\]',`\"]+)"))
我與
"""\[[^\]]+\]""".r
的正則表達式去。
"""\[[^\]]+\]""".r findAllIn """[a], [b], [123 Hello]""" toList
res2: List[String] = List([a], [b], [123 Hello])
只要你不會需要解析嵌套表達式爲
"""\[[^\]]+\]""".r findAllIn """[[a], [b]]""" toList
res4: List[String] = List([[a], [b])
val Bracketed = """\[.*?\]""".r
def check(s: String) =
(Bracketed findAllIn s).toSeq
check("Wrong (curved) thingies") // Nil
check("") // Nil
check("[Hi]") // [Hi]
check("[Hi][There]") // [Hi], [There]
check("[Hi]gap[There]gop") // [Hi], [There]
嗯..好像是使用雙反斜線工作的正則表達式將做工精細.... – monica
兩個小技巧 - 首先,考慮使用三重引號的字符串,所以你不需要逃避反斜槓;其次,你可以在一個字符串上調用.r來將它轉換爲正則表達式。把它們放在一起,你可以這樣做:val MajorMinor:Regex =「」「(\ d +)\。(\ d +)」「」。r – mpilquist
@mpilquist你爲什麼不把它作爲回答發佈? –