我一直很高兴地运行
Regex replaceAllIn很长一段时间但是当替换字符串看起来像一个正则表达式时遇到了问题.以下说明了问题(
Scala 2.9.1-1).请注意,真正的问题空间要复杂得多,因此使用更简单的解决方案的想法并不是真的可行(只是为了抢占不可避免的“你为什么不试试……”:D)
val data = "val re = \"\"\"^[^/]*://[^/]*/[^/]*$\"\"\".r"
val source = """here
LATEX_THING{abc}
there"""
val re = "LATEX_THING\\{abc\\}".r
println(re.replaceAllIn(source,data))
这会出现以下错误:
java.lang.IllegalArgumentException: Illegal group reference
如果我将数据从简单的内容更改为简单的内容:
val data = "This will work"
一切都很好.
看起来像replaceAllIn以某种方式查看第二个字符串并将其用作另一个RE来引用从第一个RE记住的内容……但是文档对此没有任何说明.
我错过了什么?
编辑:好的,所以在查看java.util.regex.Matcher类之后,似乎预期的修复是:
re.replaceAllIn(source,java.util.regex.Matcher.quoteReplacement(data))