我有一个字符串,并替换如下所示的正则表达式模式:
//1 - var x = "ffw\nw\naa\\N".replaceAll("[^\\u0020-\\u00FF\\u0001\\t\\n]", "")
//2 - var x = "ffw\nw\naa\\N".replaceAll("[\\n]", "")
print(x)
1)尽管这是我要使用的模式,但不清洗任何东西。
2)仅清除小写换行符。如果我尝试执行var x = "ffw\nw\naa\\N".replaceAll("[\\N]", "")
来清理大写的N行,则出现此错误
java.util.regex.PatternSyntaxException: Illegal/unsupported escape sequence near index 2
[\N]
^
at java.util.regex.Pattern.error(Pattern.java:1957)
at java.util.regex.Pattern.escape(Pattern.java:2473)
at java.util.regex.Pattern.range(Pattern.java:2635)
at java.util.regex.Pattern.clazz(Pattern.java:2564)
at java.util.regex.Pattern.sequence(Pattern.java:2065)
at java.util.regex.Pattern.expr(Pattern.java:1998)
at java.util.regex.Pattern.compile(Pattern.java:1698)
at java.util.regex.Pattern.<init>(Pattern.java:1351)
at java.util.regex.Pattern.compile(Pattern.java:1028)
at java.lang.String.replaceAll(String.java:2223)
[^\\u0020-\\u00FF\\u0001\\t\\n]
这是我要使用的正则表达式模式,但是它不起作用,也不能清除N条新行。
答案 0 :(得分:1)
使用
val s = "ffw\nw\naa\\N"
val rx = "\\\\N|[^\\u0020-\\u00FF\\u0001\\t]"
println(s.replaceAll(rx, ""))
// => ffwwaa
详细信息
[^\\u0020-\\u00FF\\u0001\\t]
-一个与所有字符匹配的否定字符类,但匹配\u0020-\u00FF
范围,\u0001
和制表符中的字符|
-或\\\\N
-反斜杠+ N
字符组合。请参见regex demo。
答案 1 :(得分:0)
您为什么要使用Regex做到这一点?
这有效(至少在您的示例中如此:
val y = "ffw\nw\naa\\N".replace("\\N", "\\n")