Что означает регулярное выражение [^ \ p {LD} \ s]? - PullRequest
0 голосов
/ 23 июня 2019

Не могли бы вы объяснить, в чем смысл следующего выражения: [^\\p{LD}\\s]. Я знаю, что ^ означает отрицание, \s означает пробелы, но я не могу собрать все это вместе, особенно эту часть с {LD}. Не могли бы вы помочь?

Это часть следующего кода:

map(x->x.replaceAll("[^\\p{LD}\\s]",""))

Ответы [ 3 ]

1 голос
/ 23 июня 2019

\p{} - это синтаксис, используемый для написания регулярных выражений Юникода. См. регулярные-выражения.info для получения дополнительной информации.

На этой странице можно прочитать:

\ p {L} соответствует одной кодовой точке в категории «буква».

Таким образом, [^\p{L}\s] будет соответствовать чему угодно, кроме пробела или символа Юникода, принадлежащего категории «буква» (например, не будет соответствовать ни одному из следующих: a, à (U + 00E0) или ( U + 3042)).

Демо

LD не является допустимой категорией и выдает ошибку.

Вы можете увидеть движки, которые поддерживают этот синтаксис здесь .

0 голосов
/ 23 июня 2019

Это означает любой символ, не включенный в []:

[^\\p{LD}\\s]
  • ^ - символ, не включенный в []
  • \\ - означает \
  • и любой другой символ: p { L D } }

Соответствие, например: w, $, y, 6,, (, + ...

0 голосов
/ 23 июня 2019

редактирование:

Предыдущее регулярное выражение было [^\p{LD}\s], поэтому оно было недействительным

Для: [^\\p{LD}\\s]

Соответствие предложения начинается с: \p{LD}\s

Базовый для отредактированного вопроса, заменяет все совпадения префиксом вроде: \p{LD}\s на пустой

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...