编写一个 select 字符串的正则表达式

Writing a regular expression that will select a string

我有一个包含蛋糕名称的 .txt(下面 * 导出自...)以及它从哪里导出。我在 WPF/C# 中执行 UI,我有一个文本框,您可以在其中输入字符串并单击 "search" 按钮。我想写一个正则表达式,它只会在蛋糕的整个名称中查找该字符串,并显示带有该字符串的所有蛋糕名称。我没有看到具有这些名称的模式。

例如:

输入 --> 在我输入的文本框中:草莓

输出 --> Strawberry Shortcake , Eva's Strawberry Cake

这是我的 .txt 文件:

                * Exported from MasterCook *

                        Blueberry Crunch Coffee Cake

                * Exported from MasterCook *

                        Filled Berlin Doughnuts (Bismarks)

                * Exported from MasterCook *

                        Strawberry Shortcake

                * Exported from MasterCook *

                         Eva's Strawberry Cake

                * Exported from MasterCook *

                        Fresh Apple Cake #3

                * Exported from MasterCook *

                         Frozen Lady Heath Dessert **

                * Exported from MasterCook *

                        Grandma Stefan's German Cheese Torte

对于这个简单的场景,您需要一个正则表达式。

假设你的蛋糕列表存储在一个列表中,那么你需要做的就是这样

List<string> searchCakes(string keyword, List<string> allCakes) {
    return allCakes.Where(cake=> cake.Contains(keyword)).ToList()
}

我不知道你的蛋糕清单有多大,但你描述问题的方式根本不需要 RegEx。默认情况下,RegEx 一次计算一行——除非您特别指定。

正则表达式 ".*Strawberry.*"mystring.Contains("Strawberry") 基本相同。 Contains() 方法 比正则表达式选项快 很多,如果列表非常大,这会产生很大的不同。

您需要管理的是蛋糕列表。您可以读取文件一次并将蛋糕列表存储在列表中,或者如果文件很大,您可以将其放入数据库或 Lucene 索引中。