我需要在解析文件时找到'} {“_ id”'。
该图案内可能有任意数量的空白区域或没有空白区域。我不想替换文件中的任何其他空格,除非匹配该模式。我想用'},{“_ id”'替换。
我在scala代码中尝试这个并且使用正则表达式它一直给我'非法重复'错误。
正在尝试使用的正则表达式查找字符串是
fileTxt.replaceAll("[\\s]+}[\\s]+{[\\s]+\"_id\"", "},{\"_id\"")
我怎样才能实现这个目标?
答案 0 :(得分:0)
Java正则表达式中使用{
和}
个字符将子模式标记为具有重复值。所以,
"\\s{3,4}"
是一种模式,表示应该匹配三到四个连续的空格。
您应该更改正则表达式以转义“{”和“}”字符。
fileTxt.replaceAll("[\\s]+\\}[\\s]+\\{[\\s]+\"_id\"", "},{\"_id\"")
答案 1 :(得分:0)
错误消息是由于特殊的正则表达式字符{
和}
未在匹配模式中转义。其他一些注意事项:1)使用*
匹配0或更多(而不是+
匹配1个或更多)空格,以及2)使用"""
括起模式匹配表达式以避免像双反斜杠一样逃脱:
val s = """} { "_id""""
s.replaceAll("""\s*\}\s*\{\s*"_id"""", """\},\{"_id"""")
// res1: String = },{"_id"