Поиск двойного слова с регулярными выражениями - PullRequest
2 голосов
/ 11 августа 2009

Я хочу найти двойные слова в тексте, я использовал (\w+) +\1, это работает, но, тем не менее, он находит только «abc abc» в тексте.

я также хочу найти "abc def abc def"

спасибо, ..

Ответы [ 4 ]

4 голосов
/ 11 августа 2009

Следующее регулярное выражение будет соответствовать любой повторяющейся последовательности символов:

/(.+).*?\1/

Если вам нужны только повторяющиеся последовательности, между которыми нет ничего, кроме пробела, используйте вместо этого:

/(.+)\s+?\1/

Если вы хотите, чтобы слова разделялись только пробелами, измените (.+) на (\w+):

/(\w+)\s+?\1/

Если вы хотите посмотреть на слова, игнорируя такие вещи, как пунктуация, границы слов могут быть более полезными:

/(\b\w+?\b)\.+?\b\1\b/
1 голос
/ 11 августа 2009

Вы пытаетесь удалить дубликаты ? или вы также можете проверить этот ответ

1 голос
/ 11 августа 2009

"(\w.*) +\1" может быть? или это слишком общее для ваших нужд?

"(\w+(?:\s+\w+)*) +\1" также может работать.

1 голос
/ 11 августа 2009

Не уверен, что вы хотите, чтобы он соответствовал, но это может быть так же просто, как изменить его на:

(\w+) +.*\1

.* будет соответствовать любым дополнительным символам, которые могут быть между ними.

Это будет соответствовать 'abc def abc' части 'abc def abc def'. Если вы хотите сопоставить все это, измените его на:

(\w+) +.*\1.*

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