我想創建一個函數來創建與輸入中給定的任意字符串匹配的正則表達式。例如,當我用123$
提供它時,它應該在字符串的末尾與字面上的"123$"
而不是123
相匹配。作爲正則表達式傳遞的轉義字符串
def convert(xs: String) = (xs map (x => "\\"+x)).mkString
val text = """ 123 \d+ 567 """
val x = """\d+"""
val p1 = x.r
val p2 = convert(x).r
println(p1.toString)
\d+ // regex to match number
println((p1 findAllIn text).toList)
List(123, 567) // ok, numbers are matched
println(p2.toString)
\\\d\+ // regex to match "backshash d plus"
println((p2 findAllIn text).toList)
List() // nothing matched :(
所以最後findAllIn
應在文本中發現\d+
,但事實並非如此。這裏有什麼問題?
你是不是想在你的腳本中生成一個正則表達式?我不確定這個問題。在Java中,您需要使用另一個\例如匹配空格\\ s。不確定Scala語言。 – 2012-08-02 09:14:53
當文本中不包含''+''時,它應該如何在''text''中找到''d +''(語法)? – 2012-08-02 09:15:34
@ mhs:ups,錯字。但它仍然不起作用。 – 2012-08-02 09:38:19