Scala Regex заменить не работает с несколькими шаблонами и для новой строки - PullRequest
0 голосов
/ 29 октября 2018

У меня есть строка и шаблон регулярных выражений заменяется следующим:

//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] Это шаблон регулярного выражения, который я хотел бы использовать, однако он не работает и не очищает новые строки с заглавными буквами.

Ответы [ 2 ]

0 голосов
/ 29 октября 2018

Используйте

val s = "ffw\nw\naa\\N"
val rx = "\\\\N|[^\\u0020-\\u00FF\\u0001\\t]"
println(s.replaceAll(rx, ""))
// => ffwwaa

См. онлайн Scala демо .

Детали

  • [^\\u0020-\\u00FF\\u0001\\t] - класс отрицательных символов, который соответствует любому символу, НО символы из диапазона \u0020-\u00FF, \u0001 и табуляция
  • | - или
  • \\\\N - комбинация символов с обратной косой чертой + N.

См. Демоверсию regex .

0 голосов
/ 29 октября 2018

Почему вы хотите сделать это с Regex?

Это работает (по крайней мере, для вашего примера:

val y = "ffw\nw\naa\\N".replace("\\N", "\\n")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...