我想编写一个显示给我的命令,例如,“ this” 到“ that”,这两个单词之间出现的所有内容。
示例:“从我的大学到朋友的房子 20英里远。”
过滤器=“ 大学”和“ 房屋”。
Result =“ 给我朋友的”
那会告诉我结果。
请帮助我。我需要此代码。
我认为Regex可以编写此命令,但我不知道。
答案 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 “
结果是:给我朋友的,给阿姨,给叔叔的
我想搜索全文并向我展示两个单词之间的所有单词。(大学,房子)