我正在尝试匹配两个带有'+'符号的字符串。
val mystring = "test+string"
val tomatch = "test+string"
mystring.matches(tomatch)
This returns False.
尝试使用\ +来逃避+但是它不起作用。
答案 0 :(得分:3)
转义+
是正确的,因为\+
与文字+
匹配。需要以正则表达式模式转义的字符数量更多,请参阅What special characters must be escaped in regular expressions?
在Scala中,您可以使用"""...."""
三引号字符串文字来仅使用1个反斜杠。请参阅Scala regex help:
由于转义不是在多行字符串文字中处理的,因此使用三引号可以避免必须转义反斜杠字符,以便
"\\d"
可以写"""\d"""
。使用某些插值器也可以获得相同的结果,例如raw"\d".r
或自定义插值器r"\d"
也会编译Regex
。
所以,使用
val mystring = "test+string"
val tomatch = """test\+string"""
mystring.matches(tomatch)
请参阅Scala demo
否则,在常规(非“原始”)字符串文字中,您需要双反斜杠:
val tomatch = "test\\+string"
如果整个字符串模式应被视为文字字符串,请使用
import scala.util.matching.Regex
然后
val tomatch = Regex.quote("test+string")
Regex.quote
将逃脱应该正确转义的所有特殊字符。