Правильный парсинг слов через Регулярные выражения

Рейтинг: 0Ответов: 2Опубликовано: 20.06.2023

имеется слово "какой-то" в тексте. Из текста нужно удалить все знаки препинания, однако, если я использую такую конструкцию RegExp [\p{P}], то тире удаляется и из слова "какой-то". Подскажите пожалуйста, как поправить шаблон, чтобы правило было верным.

Ответы

▲ 1Принят

А если на самом деле ты хотел не удалить, а разбить на слова, то это делается гораздо проще:

var s = 'имеется слово "какой-то" в тексте. Из текста нужно удалить все знаки препинания, однако, если я использую такую конструкцию RegExp [\p{P}], то тире удаляется и из слова "какой-то". Подскажите пожалуйста, как поправить шаблон, чтобы правило было верным.'

console.log(s.match(/\p{L}+(-\p{L}+)*/gu))
.as-console-wrapper.as-console-wrapper { max-height: 100vh }

▲ 0

Вот 3 способа:

var s = 'имеется слово "какой-то" в тексте. Из текста нужно удалить все знаки препинания, однако, если я использую такую конструкцию RegExp [\p{P}], то тире удаляется и из слова "какой-то". Подскажите пожалуйста, как поправить шаблон, чтобы правило было верным.'

console.log(s.replace(/(\p{L}-(?=\p{L}))|[^\s\p{L}]/gu, "$1"))
console.log(s.replace(/(?!(?<=\p{L})-\p{L})[^\s\p{L}]/gu, ""))
console.log(s.replace(/(?!-\p{L}(?<=\p{L}..))[^\s\p{L}]/gu, ""))
.as-console-wrapper.as-console-wrapper { max-height: 100vh }