Подтвердить что ты не робот

Как мне сопоставить всю строку с регулярным выражением?

Мне нужно регулярное выражение, которое будет находить совпадения, когда вся строка соответствует моему запросу.

Например, если я выполняю поиск фильмов с именем "Красный Октябрь", я хочу только совпадение с этим точным заголовком (без учета регистра), но не с такими названиями, как "The Hunt For Red October". Не совсем уверен, что знаю, как это сделать. Кто-нибудь знает?

Спасибо!

4b9b3361

Ответ 1

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

^Red October$

По умолчанию регулярные выражения чувствительны к регистру. ^ обозначает начало совпадающего текста и $ конец.

Ответ 2

Как правило, и с настройками по умолчанию привязки ^ и $ являются хорошим способом обеспечения соответствия регулярного выражения целой строке.

Несколько оговорок:

Если у вас есть чередование в вашем регулярном выражении, обязательно добавьте ваше регулярное выражение в группу, не связанную с захватом, перед тем, как окружить ее ^ и $:

^foo|bar$

конечно, отличается от

^(?:foo|bar)$

Кроме того, ^ и $ могут принимать другое значение (начало/конец строки вместо начала/конца строки), если установлены определенные параметры. В текстовых редакторах, поддерживающих регулярные выражения, обычно это поведение по умолчанию. На некоторых языках, особенно Ruby, это поведение нельзя даже отключить.

Поэтому существует еще один набор якорей, которые гарантированно будут соответствовать только в начале/конце всей строки:

\A совпадает с началом строки.

\Z соответствует в конце строки или перед окончанием разрыва строки.

\Z соответствует в самом конце строки.

Но не все языки поддерживают эти якоря, особенно JavaScript.

Ответ 3

Используйте модификаторы ^ и $ для обозначения того, где шаблон регулярного выражения находится относительно начала и конца строки:

Regex.Match("Red October", "^Red October$"); // pass
Regex.Match("The Hunt for Red October", "^Red October$"); // fail

Ответ 4

Вам нужно приложить ваше регулярное выражение в ^ (начало строки) и $ (конец строки):

^Red October$

Ответ 5

Я знаю, что это может быть немного поздно ответить на это, но, возможно, это будет полезно для кого-то другого.

Простейший способ:

var someString = "...";
var someRegex = "...";
var match = Regex.Match(someString , someRegex );
if(match.Success && match.Value.Length == someString.Length){
    //pass
} else {
    //fail
}

Ответ 6

Извините, но это немного неясно.

Из того, что я читал, вы хотите сделать простое сравнение строк. Для этого вам не нужно регулярное выражение.

string myTest = "Red October";
bool isMatch = (myTest.ToLower() == "Red October".ToLower());
Console.WriteLine(isMatch);
isMatch = (myTest.ToLower() == "The Hunt for Red October".ToLower());

Ответ 7

Соответствие всей строки может быть выполнено с помощью ^ и $, как указано в предыдущих ответах.

Чтобы сделать регистр нечувствительным к регистру, вы можете реализовать хак, который включает классы символов. Много классов символов.

^[Rr][Ee][Dd] [Oo][Cc][Tt][Oo][Bb][Ee][Rr]$

Ответ 8

Вы можете сделать это, как этот Exemple, если я хочу только один раз поймать букву минус a в строке, и ее можно проверить с помощью myRegex.IsMatch()

^ [^ е] [е] {1} [^ е] $