使用Regex C#进行过滤和搜索

时间:2018-09-08 02:06:11

标签: regex search filter

我想编写一个显示给我的命令,例如,“ this” “ that”,这两个单词之间出现的所有内容。

示例:“从我的大学到朋友的房子 20英里远。”

过滤器=“ 大学”和“ 房屋”。

Result =“ 给我朋友的

那会告诉我结果。

请帮助我。我需要此代码。

  

我认为Regex可以编写此命令,但我不知道。

3 个答案:

答案 0 :(得分:1)

正则表达式是

university(.*)house

您可以在here中看到它。

.是通配符,*告诉我们通配符可以多次匹配。 ()创建一个组,以后可以匹配该组的内容。由于该组介于大学和房屋之间,并且因为我们告诉此组匹配任何字符,所以结果将是大学和房屋之间的所有内容。

在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);
}

答案 1 :(得分:0)

您可以使用以下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;

答案 2 :(得分:0)

这里有个问题。

如果我的文字是:“从大学到我朋友的房子 20英里。从大学到姑姑20英里 house 。从大学到叔叔的 house

结果是:给我朋友的给阿姨给叔叔的

我想搜索全文并向我展示两个单词之间的所有单词。(大学,房子)