使用正则表达式查找句子中的第一个单词
本文关键字:第一个 单词 句子 正则表达式 查找 | 更新日期: 2023-09-27 17:56:18
我想为以下情况编写一个正则表达式:
-
我想找出句子中是否存在"如何"一词,然后显示与如何相关的内容
-
我想找出句子中是否存在"帮助"一词,然后显示与帮助相关的内容
如果句子中同时存在"如何"和"帮助 ",则从给定句子中的"帮助"和"如何"中找出哪个单词首先出现,并基于该显示各自的内容
例如,如果句子像"帮助你,但如何"在这种情况下,应该显示与"帮助"相关的内容,如果句子是"如何帮助您",在这种情况下,应该显示与如何显示相关的内容。
我写了一个 C# 代码,如下所示,
if (((Regex.Match(sentence, @"('s|^)how('s|$)").Success) &&
(Regex.Match(sentence, @"('s|^)help('s|$)").Success)) ||
Regex.IsMatch(sentence, @"('s|^)how('s|$)", RegexOptions.IgnoreCase))
{
Messegebox.show("how");
}
else if (Regex.IsMatch(sentence, @"('s|^)help('s|$)", RegexOptions.IgnoreCase))
{
Messegebox.show("help");
}
但是它不起作用,任何人都可以帮我吗?(我已经在这里提出了前 2 个问题的问题,根据该问题的答案,我编写了上面的代码,但它不适用于第 3 个问题)
您可以使用负面的背后看,以便匹配"如何",只是如果您背后没有"帮助",反之亦然。
代码将是这样的:
static Regex how = new Regex(@"(?<!'bhelp'b.*)'bhow'b", RegexOptions.IgnoreCase);
static Regex help = new Regex(@"(?<!'bhow'b.*)'bhelp'b", RegexOptions.IgnoreCase);
static void Main(String[] args)
{
Console.WriteLine(helpOrHow("how"));
Console.WriteLine(helpOrHow("help"));
Console.WriteLine(helpOrHow("Help you how"));
Console.WriteLine(helpOrHow("how to help you"));
}
static string helpOrHow(String text)
{
if (how.IsMatch(text))
{
return "how";
}
else if (help.IsMatch(text))
{
return "help";
}
return "none";
}
输出:
how
help
help
how