避免在常规exprssion中匹配转义字符

时间:2015-06-26 06:37:19

标签: regex scala

我想要在字符串中转义一些字符并使正则表达式与它不匹配。

scala代码中的示例:

val regexp = "<".r
val testedString = "< \\< <"
val resultList = regexp.findAllMatchIn(testedString).toList.map(m => m.start)
val wrongList = List(0, 3, 5)
val correctList = List(0, 5)

val isWrongList = resultList == wrongList
val isCorrectList = resultList == correctList

它评估为:

regexp: scala.util.matching.Regex = <
testedString: String = < \< <
resultList: List[Int] = List(0, 3, 5)
wrongList: List[Int] = List(0, 3, 5)
correctList: List[Int] = List(0, 5)  

isWrongList: Boolean = true
isCorrectList: Boolean = false

我想做的是逃避第二&#39;&lt;&#39;字符和匹配仅在位置0和5上。因此,isCorrectList应评估为true,而isWrongList应评估为false。

你能帮我写这个正则表达式还是给出任何线索?

1 个答案:

答案 0 :(得分:2)

您可以在正则表达式中使用负面的lookbehind:

val regexp = "(?<!\\\\)<".r

以防止匹配\<个案例。

RegEx Demo