Я новичок в регулярных выражениях и не могу понять, как написать одно регулярное выражение, которое "соответствовало бы" любым повторяющимся последовательным словам, например:
Париж на в весенний период .
Не то чтобы это связано.
Над чем ты смеешься? Являются ли мои мои регулярные выражения плохо ??
Есть ли одно регулярное выражение, которое будет соответствовать ВСЕМ выделенным выше полужирным строкам?
regex
duplicates
capture-group
Джошуа
источник
источник
not that that is related
->not that is related
)? Заранее спасибо\1
!\b(\w+)\s+(\1\s*)+\b
?Ответы:
Попробуйте это регулярное выражение:
Вот
\b
граница слова и\1
ссылка на зафиксированное совпадение первой группы.источник
\0
тоже сделать ? (Где\0
находится все регулярное выражение, до текущей точки ИЛИ где\0
относится ко всему регулярному выражению)Я считаю, что это регулярное выражение обрабатывает больше ситуаций:
Хороший выбор тестовых строк можно найти здесь: http://callumacrae.github.com/regex-tuesday/challenge1.html
источник
<strong>\0</strong>
но не работает.$1 <strong>$2</strong>
. Но также используйте другое регулярное выражение/\b(\S+) (\1)\b/gi
. Вот ссылка: callumacrae.github.io/regex-tuesday/…<p class="bebe">bla bla</p>
я могу интегрировать эту формулу регулярного выражения?Попробуйте это с RE ниже
() * Повторение снова
источник
Широко используемая библиотека PCRE может справиться с такими ситуациями ( хотя вы не добьетесь того же с POSIX-совместимыми механизмами регулярных выражений):
источник
\W+
.\b
не будет этого делать, потому что не потребляет никаких символов.... the these problems...
. Это решение не так надежно, как общая структура паттерна Гамбо, который в достаточной мере реализует границы слов.<p class="bebe">bla bla</p>
я могу интегрировать эту формулу регулярного выражения?Приведенное ниже выражение должно работать правильно, чтобы найти любое количество последовательных слов. Соответствие может быть нечувствительным к регистру.
Пример ввода: Goodbye goodbye GooDbYe
Пример вывода: до свидания
Объяснение:
Выражение регулярного выражения:
\ b: начало границы слова
\ w +: любое количество символов слова
(\ s + \ 1 \ b) *: любое количество пробелов, за которыми следует слово, которое соответствует предыдущему слову и заканчивается границей слова. Все, завернутое в *, помогает найти более одного повтора.
Группировка:
m.group (0): должна содержать совпавшую группу в приведенном выше случае. До свидания, до свидания, GooDbYe.
m.group (1): Должен содержать первое слово совпадающего шаблона в приведенном выше случае до свидания
Метод Replace заменяет все последовательные совпадающие слова первым экземпляром слова.
источник
Это регулярное выражение, которое я использую для удаления повторяющихся фраз в моем Twitch-боте:
(\S+\s*)
ищет любую строку символов, не являющуюся пробелом, за которой следует пробел.\1{2,}
затем ищет более двух экземпляров этой фразы в строке для сопоставления. Если есть 3 одинаковых фразы, они совпадают.источник
\s*
за группы захвата. См. Эту демонстрацию: regex101.com/r/JtCdd6/1I said "oioioi" that's some wicked mistressship!
наoioioi
иsss
Нет. Это неправильная грамматика. Могут быть регулярные выражения для конкретного движка / языка, которые вы можете использовать, но не существует универсального регулярного выражения, которое могло бы это сделать.
источник
Вот тот, который несколько раз перехватывает несколько слов:
источник
<p class="bebe">bla bla</p>
я могу интегрировать эту формулу регулярного выражения?<p class="bebe">.*?\b\s+(\w+)\b\K\s+\1\s+\b(?=.*?<\/p>)
Регулярное выражение для удаления 2+ повторяющихся слов (последовательные / непоследовательные слова)
Попробуйте это регулярное выражение, которое может поймать 2 или более повторяющихся слова и оставить только одно слово. И повторяющиеся слова не обязательно должны быть последовательными .
Здесь
\b
используется для границы слова,?=
используется для положительного просмотра\1
вперед и используется для обратных ссылок.Пример источника
источник
"the cat sat on the mat"
->" cat sat on the mat"
Пример на Javascript: The Good Parts можно адаптировать для этого:
\ b использует \ w для границ слова, где \ w эквивалентно [0-9A-Z_a-z]. Если вы не возражаете против этого ограничения, принятый ответ в порядке.
источник
Поскольку некоторые разработчики заходят на эту страницу в поисках решения, которое не только устраняет повторяющиеся последовательные подстроки без пробелов, но и трижды, я покажу адаптированный шаблон.
Выкройка:
/(\b\S+)(?:\s+\1\b)+/
( Демонстрация выкройки )Заменить:
$1
(заменяет совпадение полной строки на группу захвата №1)Этот шаблон жадно сопоставляет «целую» подстроку без пробелов, затем требует одну или несколько копий сопоставленной подстроки, которые могут быть разделены одним или несколькими пробельными символами (пробел, табуляция, новая строка и т. Д.).
В частности:
\b
(границы слова) символы жизненно важны для обеспечения несоответствия частям слов.+
(один или более квантор) на нерабочий захвате группы является более подходящим , чем*
потому , что*
будет «беспокоить» движок регулярных выражений для захвата и заменить одноточечно вхождения - это расточительно шаблон дизайн.* обратите внимание, если вы имеете дело с предложениями или строками ввода с пунктуацией, тогда шаблон необходимо будет дополнительно уточнить.
источник
Это выражение (вдохновленное Майком, приведенным выше), кажется, улавливает все дубликаты, трижды и т. Д., Включая те, которые находятся в конце строки, чего нет у большинства других:
Я знаю вопрос, который задают, чтобы сопоставить дубликаты , но три экземпляра - это всего лишь 2 дубликата рядом друг с другом :)
Во-первых, я поставил,
(^|\s+)
чтобы он начинался с полного слова, иначе «детский стейк» перешел бы в «детский стейк» (буквы «s» совпадали бы). Затем ему соответствуют все полные слова ((\b\S+\b)
), за которыми следует конец строки ($
) или количество пробелов (\s+
), все повторяется более одного раза.Я пробовал вот так, и все получилось:
источник
\b
в конец вот так:/(^|\s+)(\S+)(($|\s+)\2)+\b/g, "$1$2")
Это будет работать в таких ситуациях:the the string String string stringing the the along the the string
станетthe string stringing the along the string
Уведомлениемstring stringing
. Он совпадает с вашим ответом. Спасибо.Используйте это в случае, если вы хотите проверять повторяющиеся слова без учета регистра.
источник