Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
scala regex replace不使用多种模式,用于大写换行符_Regex_Scala - Fatal编程技术网

scala regex replace不使用多种模式,用于大写换行符

scala regex replace不使用多种模式,用于大写换行符,regex,scala,Regex,Scala,我有一个字符串和替换正则表达式模式,如下所示: //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

我有一个字符串和替换正则表达式模式,如下所示:

//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]”,“”)
以清除新行中的大写字母,则会出现此错误

java.util.regex.PatternSyntaxException:索引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)
[\N]
^
位于java.util.regex.Pattern.error(Pattern.java:1957)
位于java.util.regex.Pattern.escape(Pattern.java:2473)
位于java.util.regex.Pattern.range(Pattern.java:2635)
位于java.util.regex.Pattern.clazz(Pattern.java:2564)
位于java.util.regex.Pattern.sequence(Pattern.java:2065)
位于java.util.regex.Pattern.expr(Pattern.java:1998)
位于java.util.regex.Pattern.compile(Pattern.java:1698)
Pattern.(Pattern.java:1351)
位于java.util.regex.Pattern.compile(Pattern.java:1028)
位于java.lang.String.replaceAll(String.java:2223)

[^\\u0020-\\u00FF\\u0001\\t\\n]
这是我想要使用的正则表达式模式,但是它不起作用,也不会清除新行中的大写字母。

为什么要对正则表达式执行此操作

这很有效(至少对于您的示例:

val y = "ffw\nw\naa\\N".replace("\\N", "\\n")
使用

详细信息

  • [^\\u0020-\\u00FF\\u0001\\t]
    -一个求反字符类,它与任何字符匹配,但与
    \u0020-\u00FF
    范围、
    \u0001
    和选项卡中的字符除外
  • |
    -或
  • \\\\N
    -反斜杠+
    N
    字符组合

请参阅。

我无法完成多个替换,我需要编辑
[^\\u0020-\\u00FF\\u0001\\t\\n]
要考虑大写N个新行字符,不知道为什么不能处理普通新行字符。我使用正则表达式是因为这是我正在处理的要求,我们正在处理一个可参数化的正则表达式字符串。确切的字符串在我们的旧工作流中工作,不明白为什么它不能与scala一起工作。你知道吗你想删除
\
N
的组合吗?比如
“[^\u0020-\u00FF\u0001\t\N]\\N”“”
(等于
“[^\\u0020-\\u00FF\\u0001\\t\\N]\\\\N”
)?
“[^\u0020-\u00FF\u0001\t\N]\\N”“”
这可以正确地删除
\n
\n
字符,但是我更喜欢单双引号方法。但是
“[^\\u0020-\\u00FF\\u0001\\t\\n]\\\\\n”
删除
\n
字符,但不删除
\n
字符。
val x=“ffw\nw\nw\naa\\n.replaceAll([^\\u0020-\\u00FF\\u0001\\t\\n]\\\\\\\\\\\\n),”
然后
打印(x)
没有
\N
但是有
\N
字符如果需要删除换行符,为什么要在求反字符类中使用
\N
呢?使用
“[^\\u0020-\\u00FF\\u0001\\t]\\\\\N”
。请参见产生
ffwwaa
val s = "ffw\nw\naa\\N"
val rx = "\\\\N|[^\\u0020-\\u00FF\\u0001\\t]"
println(s.replaceAll(rx, ""))
// => ffwwaa