фильтрация и поиск с помощью Regex C # - PullRequest
0 голосов
/ 08 сентября 2018

Я хочу написать команду, которая показывает мне, например, «this» to «that», все, что появляется между этими двумя словами.

Пример: «От моего университета до дома моего друга в 20 милях».

Filter = " университет " и " дом ".

Result = " для моего друга "

Это покажет мне результат.

Пожалуйста, помогите мне. Мне нужен этот код.

Я думаю, что Regex может написать эту команду, но я не знаю.

Ответы [ 3 ]

0 голосов
/ 08 сентября 2018

Вы можете использовать следующие RegEx:

(?<=university).+(?=house)

если ваш RegEx поддерживает просмотр назад и ожидание.

Позволяет найти university, затем выбирает все символы до house. Учитывая ваш пример, он дает правильный результат: to my friend's.

Конечно, вы можете изменить слова поиска, составив формулу, которая работает для каждого слова поиска:

string word1 = "university";
string word2 = "house";
string sentence = "From my university to my friend's house is 20 miles away.";
RegEx reEx = new RegEx("(<=" + word1 + ").+(?" + word2 + ")");
string match = regex.Match(sentence).Value;
0 голосов
/ 08 сентября 2018

Здесь есть проблема.

Если мой текст: "20 миль от университета до дома моего друга . Это 20 миль от университета до тети дом . Это 20 миль от университета до дома дяди "

Результат: для моего друга , для тети , для дяди

Я хочу найти весь текст и показать мне все слова между двумя словами. (Университет, дом)

0 голосов
/ 08 сентября 2018

Регулярное выражение для этого

university(.*)house

Вы можете увидеть это в действии здесь .

. - это подстановочный знак, а * говорит нам, что подстановочный знак может совпадать несколько раз. () создает группу, в которой содержимое группы может быть сопоставлено позже. Поскольку эта группа находится между словами «университет и дом», и поскольку мы указали этой группе совпадение с любым персонажем, результатом будет все, что находится между словами «университет и дом».

В C # Вам необходимо импортировать регулярные выражения:

using System;
using System.Text.RegularExpressions;

И тогда вы можете получить все совпадения с регулярным выражением:

Regex rx = new Regex(@"university(.*)house",
          RegexOptions.Compiled | RegexOptions.IgnoreCase);

string example = "From my university to my friend's house is 20 miles away.";

MatchCollection matches = rx.Matches(text);

foreach (Match match in matches) {
    Console.WriteLine("Match: {0} at index [{1}, {2})", 
        match.Value, 
        match.Index, 
        match.Index + match.Length);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...