Regex, чтобы усечь все слова до максимальной длины слова? - PullRequest
0 голосов
/ 30 сентября 2019

РЕДАКТИРОВАНИЕ: Как я могу использовать RegEx, чтобы сопоставить все слова в предложении и обрезать их до максимальной длины 3 буквы каждое? Я использую функцию поиска / замены.

В качестве примера я хотел бы взять это предложение:

RegEx to trim all words

и вернуть это:

Reg to tri all wor

, новместо этого я получаю это:

Reg

Я использую Advanced Renamer с функцией замены:

Поиск:

^([^\d\W]{3}).*?$

Заменить:

$1

Любая помощь будет оценена!

Ответы [ 3 ]

0 голосов
/ 30 сентября 2019

В документах Advanced Renamer указано, что используется PCRE, который поддерживает \K

. При замене используйте пустую строку.

[^\d\W]{3}\K[^\d\W]+
  • [^\d\W]{3} Совпадение с 3-мя символами, кроме цифр
  • \K Забудьте, что было найдено
  • [^\d\W]+ Совпадение с 1 + символами, кроме цифр

Regex demo

0 голосов
/ 30 сентября 2019

Найти: (\w{0,3})[\w]*

  • (\w{0,3}) получает первые 3 символа ([a-zA-Z0-9_]) слова (входит в группу захвата 1)
  • [\w]* получает остальные символы, поэтому мы можем забыть о них

Заменить на: \1 (первая группа захвата)

См. Regex101

0 голосов
/ 30 сентября 2019

Проблема в том, что вы сопоставляете всю строку с этим регулярным выражением и, таким образом, обрезаете всю строку до ее первых 3 символов. Вы не говорите, какое приложение вы делаете поиск / заменить. Пожалуйста, отредактируйте свой вопрос, чтобы уточнить это. Но похоже, что вместо этого вам нужно что-то вроде:

([^\d\W]{3})[^\d\W]*

И вы хотите использовать опцию «заменить все».

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