【问题标题】:Find word which was the match查找匹配的单词
【发布时间】:2017-05-25 15:35:24
【问题描述】:

我有这段代码,我在字符串中搜索数组中的单词:

string wordlist = synonymslistbox.Items[q_index].ToString().Split(':')[0].Replace(',', ' ');

var pattern = new Regex(@"\W");

var qa = pattern.Split(first_sentence).Any(w => wordlist.Contains(w));

现在我想实现两件我不知道该怎么做的事情。

  1. 找出匹配的单词。如果找到,此代码只会返回 true
  2. 当 first_sentences 是 i like my banjo 时,它不应该在 banjo 中找到字母 a 作为单词 a。当它出现在这样的句子中时,它应该只将 a 读作一个单词:i like a big beer at the end of the afternoon

【问题讨论】:

    标签: c# regex string match


    【解决方案1】:
    1. 找出女巫词是匹配的。如果找到,则返回 true。

    使用 where 代替 any:

    var qa = pattern.Split(first_sentence).Where(w => wordlist.Contains(w));
    
    1. 当 first_sentences 是“我喜欢我的班卓琴”时,它不应该在班卓琴中找到 a 作为单词 a。它应该只将 a 读作一个单词 它是在下面这样的句子中“我喜欢在结束时喝一大杯啤酒 下午”

    你的单词表不应该是一个字符串,而是一个字符串列表或数组。确保它是一个包含“a”的列表。除此之外,您的代码将起作用

    【讨论】:

    • 它现在找到这个词,但如果有两个词,它只返回这个词的第一个停止。如果我的 wordlist 有“new car”,那么它只返回 new 而不是精确匹配的整个字符串
    • @GlennBoserupMøller 它与您的正则表达式的关系比任何事情都重要-您的单词用“\W”分隔,因此您应该解决这个问题-您可以使用不同的正则表达式,而是使用其他一些字符进行分隔空间等。只是一些想法。
    猜你喜欢
    • 2017-10-22
    • 2022-01-21
    • 2018-02-04
    • 2012-06-29
    • 1970-01-01
    • 2021-10-25
    • 1970-01-01
    • 2011-08-29
    相关资源
    最近更新 更多