正则表达式匹配特定单词[重复]

Posted

技术标签:

【中文标题】正则表达式匹配特定单词[重复]【英文标题】:Regex to match specific word [duplicate] 【发布时间】:2019-09-29 00:16:21 【问题描述】:

C#

        string myString = @"'Key:Apple
                            'Key:Apple123";
        string pattern = "('Key:Apple)|('Key: Apple)";
        int count = Regex.Matches(myString, pattern).Count;
        Console.WriteLine(count); //displaying count as 2
        Console.ReadLine();

我只搜索 Apple(不是 Apple123),但我得到的计数仍然为 2。如何仅搜索特定单词“Apple”然后将计数显示为 1?

我尝试了以下方法:

            string myString = @"'Key:Apple
                                'Key:Apple123";
            string pattern = "(\\b'Key:Apple\\b)|(\\b'Key: Apple\\b)";
            int count = Regex.Matches(myString, pattern).Count;
            Console.WriteLine(count); //displaying count as 0
            Console.ReadLine();

通过使用上述方法,我们将计数设为零。

请指教。谢谢!

【问题讨论】:

试试'Key: ?Apple\b 【参考方案1】:

将您的模式替换为:

string pattern = @"(Key:\bApple\b)|(Key: \bApple\b)";

\b 会检查单词边界,并能够根据您的示例将 count 评估为 1。

您可以阅读更多关于它的信息here.

【讨论】:

您可以通过在Key 之后使用? 选择空格来进一步简化此模式:string pattern = @"('Key: ?Apple\b)" 好点@derpirscher! 谢谢!!问题已解决! 祝你的项目好运!

以上是关于正则表达式匹配特定单词[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如果正则表达式不包含特定单词,如何匹配它?

没有特定单词的行匹配的正则表达式

Java如何在正则表达式中匹配重复单词?

正则表达式:匹配除一个单词之外的所有内容[重复]

正则表达式匹配在任意位置连字符并分成两行的特定单词

如何使用正则表达式匹配nuxtjs,vue中路由中的特定单词?