У меня возникли трудности с попыткой получить мой простой оператор Regex
в C#, работающий так, как я этого хочу.Условные границы слова Regex, фиксирующие неправильные слова
Если у меня есть длинная строка, и я хочу, чтобы найти слово «исполнительный», но НЕ «руководители» Я думал, что мое регулярное выражение будет выглядеть примерно так:
Regex.IsMatch(input, string.Format(@"\b{0}\b", "executive");
Это, однако, по-прежнему совпадение на входах, которые содержат только executives
, а не executive
(единственное число).
Я думал, что границы слов в регулярном выражении, если они используются в начале и конце вашего регулярного текста, будут указывать, что вы только хотите совместить это слово, а не любую другую форму этого слова?
Edit: Для того, чтобы выяснить, Что происходит, я пытаюсь найти все Notes
среди Students
, которые содержат слово executive
и игнорируя слова, которые просто содержат «исполнительный». Как следует:
var studentMatches =
Students.SelectMany(o => o.Notes)
.Where(c => Regex.Match(c.NoteText, string.Format(@"\b{0}\b", query)).Success).ToList();
где query
будет «исполнительный» в данном случае.
Что странно, что в то время как приведенный выше код будет совпадать с executives
, даже если я не хочу, чтобы он, следующий код будет не (иначе это не то, что я ожидал, что это делать):
foreach (var stu in Students)
{
foreach (var note in stu.Notes)
{
if (Regex.IsMatch(note.NoteText, string.Format(@"\b{0}\b", query)))
Console.WriteLine(stu.LastName);
}
}
Почему цикл вложенного цикла с тем же кодом регулярного выражения создает точные совпадения, в то время как выражение linq, кажется, хочет вернуть что-либо, содержащее слово, которое я ищу?
@PranavCBalan да, я прочитал это, и их пример из \ b4 \ b фактически совпадает с тем, что у меня есть, только их пример НЕ соответствует «44», тогда как мой (исполнительный против руководителей) – user2357446
Какой тип шаблон возвращается для руководителей? Я не могу заставить это произойти с учетом вашего кода. – teynon
@Tom Я отредактировал мое сообщение для уточнения – user2357446