Regex Стирание всех, кроме чисел с ограниченными цифрами - PullRequest
0 голосов
/ 16 марта 2020

Что я хочу сделать, это стереть все, кроме \d{4,7} , только заменив .
Любые идеи, чтобы получить это?

ex)
G-A15239L → 15239
( GA и L должны быть выбраны и заменены пустыми строками)
now200316stillcovid19asdf → 200316
( сейчас и stillcovid19asdf должны быть выбраны и заменены пустыми строками)

Кроме того, замена текста не ограничивается пустой строкой.
замены, например, $ 1 тоже возможно.

Использование Regex в приложениях Kustom. (включая KLCK, KLWP, KWGT)
Я не знаю, какой движок он использует, потому что нет информации о нем

Ответы [ 2 ]

1 голос
/ 16 марта 2020

Вы можете использовать

(\d{4,7})?.?

или

(\d{4,7})|.

и заменить на $1. См. regex demo .

Подробности

  • (\d{4,7})? - опционально (из-за ? в конце - если отсутствует, тогда группа обязательна) захват группы, совпадающей с 1 или 0 вхождениями от 4 до 7 цифр
  • | - или
  • .? - любой символ, отличный от переноса строки chars, 1 или 0 раз, когда ? сразу после него.

Таким образом, любое совпадение от 4 до 7 цифр сохраняется (поскольку $1 относится к значению группы 1), и если символ после него, он удаляется.

Похоже, что регулярное выражение основано на Java, поскольку все несоответствующие группы заменены на null:

enter image description here

Итак, единственно возможное решение - использовать второй проход для постобработки результатов, просто замените null на какой-то разделитель, например, новую строку.

1 голос
/ 16 марта 2020
Например,
Search:   .*?(\d{4,7})[^\d]+|.*
Replace:  $1

в Notepad ++ 6.0 или лучше (который поставляется со встроенной поддержкой PCRE ) работает с вашими примерами:

jalsdkfilwsehf
now200316stillcovid19asdf
G-A15239L

становится:

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