使用正则表达式查找句子中的第一个单词

本文关键字:第一个 单词 句子 正则表达式 查找 | 更新日期: 2023-09-27 17:56:18

我想为以下情况编写一个正则表达式:

  1. 我想找出句子中是否存在"如何"一词,然后显示与如何相关的内容

  2. 我想找出句子中是否存在"帮助"一词,然后显示与帮助相关的内容

  3. 如果句子中同时存在"如何"和"帮助
  4. ",则从给定句子中的"帮助"和"如何"中找出哪个单词首先出现,并基于该显示各自的内容

例如,如果句子像"帮助你,但如何"在这种情况下,应该显示与"帮助"相关的内容,如果句子是"如何帮助您",在这种情况下,应该显示与如何显示相关的内容。

我写了一个 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