scala:正则表达式,转义字符串?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (58)

我想创建一个函数来创建正则表达式匹配在输入处给出的任意字符串。例如,当我用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 +,但它不会。这里有什么问题?

提问于
用户回答回答于
用户回答回答于

如果你想用Scala库来做到这一点,你可以使用:

import scala.util.matching.Regex
Regex.quote("123$").r.findFirstIn("123$")

扫码关注云+社区