Существует ли регулярное выражение для поиска двух разных слов в предложении? - PullRequest
2 голосов
/ 06 февраля 2009

Существует ли регулярное выражение для поиска двух разных слов в предложении? Дополнительный балл за выражение, которое работает в MS Visual Studio 2008:)

Например:

reg_ex_match(A, B, "A sentence with A and B") = true
reg_ex_match(C, D, "A sentence with A and B") = false

См. Также этот связанный вопрос

Ответы [ 7 ]

9 голосов
/ 06 февраля 2009

Для настоящих слов:

\bA\b.+\bB\b|\bB\b.+\bA\b
3 голосов
/ 06 февраля 2009

"* A. * B. * |. *. * Б. А. *" Вы можете добавить пробелы вокруг слов A и B, если вы хотите правильные слова.

0 голосов
/ 13 апреля 2014

Выражение регулярного выражения , которое вы ищете, выглядит примерно так:

/word1.*(?=word2)|word2.*(?=word1)/igm

Это также без учета регистра и может применяться к тексту, многострочному .

Проверено на http://regexr.com/

0 голосов
/ 01 сентября 2012

Regex

Следующее регулярное выражение соответствует всей строке, только если строка содержит все слова: all your words here. Вы можете легко добавить другие слова или удалить существующие.

(?=.*?\ball\b)
(?=.*?\byour\b)
(?=.*?\bwords\b)
(?=.*?\bhere\b)
.*

Не так сложно.

0 голосов
/ 06 февраля 2009

.*A.*\s.*B.*|.*B.*\s.*A.*

Обратите внимание на использование знака «+» между А и В. Это делается для того, чтобы вы соответствовали разным точкам А и В. Если это не является обязательным требованием, ответ Лукаша Лью является правильным.

ОБНОВЛЕНИЕ: Изменено согласно превосходному наблюдению Брайана ниже. Вышеупомянутое выражение распознает A, отделенный от B (или наоборот), по крайней мере с одним символом пробела (пробел, табуляция или разрыв строки) между двумя интересующими областями.

0 голосов
/ 06 февраля 2009

Почему бы не использовать булеву логику, а не сложное регулярное выражение?

Код не проверен:

public bool reg_ex_match(Regex A, Regex B, string s) {
    return A.isMatch(s) && B.isMatch(s);
}

Обновление: предполагается, что A и B определены с границами слова:

Regex A = new Regex(@"\bA\b");
0 голосов
/ 06 февраля 2009

Попробуйте поискать regexlib , хранилище регулярных выражений.

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