正则表达式-获取部分字符串

Metscore

我有一个需要匹配的项目名称列表,项目列表可能看起来像这样:

suzu
suzu-domestic
suzu-international
suzuran
suzuran-international
scorpion
scorpion-default
yada
yada-yada
etc

如果搜索的项目是suzu,我希望从列表中得到以下结果:

suzu
suzu-domestic
suzu-international

包含任何内容suzuran如果项目搜寻是suzuran

suzuran
suzuran-international

包含任何内容suzu

在C#代码中,我有类似以下内容:

String searchForProject = "suzu";
String regStr = @"THE_REGEX_GOES_HERE"; // The regStr will be in a config file
List<Project> projects = DataWrapper.GetAllProjects();
Regex regEx = new Regex(String.Format(regStr, searchForProject));
result = new List<Project>();
foreach (Project proj in projects)
{
  if (regEx.IsMatch(proj.ProjectName))
  {
    result.Add(proj);
  }
}

问题是,我是否可以使用正则表达式使我能够在所有确切的项目名称上进行匹配,但不能通过startWith等价项返回的名称进行匹配?(今天我有个regStr = @"^({0})#",但这不能满足上述情况,因为它带来的点击数超出了预期)

如果有人可以向我提示正确的方向,我将不胜感激。谢谢 !马格努斯

维克多·史翠比维

您所需要的实际上是

var regStr = @"^{0}\b";

^锚断言在字符串的开始位置。\b模式匹配单词和非单词字符之间的位置,即字符串的开头或结尾。.*由于您正在使用Regex.IsMatch,因此不需要将其余字符串与匹配,这是多余的开销。

C#测试代码:

var projects = new List<string>() { "suzu", "suzu-domestic", "suzu-international", "suzuran", "suzuran-international", "scorpion", "scorpion-default", "yada", "yada-yada" };
var searchForProject = "suzu";
var regStr = @"^{0}\b"; // The regStr will be in a config file

var regEx = new Regex(String.Format(regStr, searchForProject));
var result = new List<string>();
foreach (var proj in projects)
{
    if (regEx.IsMatch(proj))
    {
        result.Add(proj);
    }
}

在此处输入图片说明

所述foreach可以用更短的LINQ代替:

var result = projects.Where(s => regEx.IsMatch(s)).ToList();

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

正则表达式 - 忽略部分字符串

来自分类Dev

使用正则表达式获取用特殊字符括起来的字符串部分

来自分类Dev

如果部分匹配正则表达式,则获取整个字符串

来自分类Dev

用于获取字符串部分的正则表达式

来自分类Dev

如何使用正则表达式获取字符串的特定部分

来自分类Dev

正则表达式 - 获取字符串的特定部分

来自分类Dev

如何使用正则表达式只获取字符串的特定部分?

来自分类Dev

通过正则表达式从正则表达式添加字符串

来自分类Dev

正则表达式:为字符串编辑正则表达式

来自分类Dev

如何获取正则表达式以返回字符串(不是正则表达式对象)?

来自分类Dev

在C#中使用正则表达式(正则表达式)从字符串获取值

来自分类Dev

正则表达式:获取字符串的匹配部分和“不匹配”部分

来自分类Dev

从正则表达式获取字符串中的字符串

来自分类Dev

正则表达式(搜索功能(@“字符串内容”)以获取“字符串内容”

来自分类Dev

正则表达式在子字符串之前获取子字符串

来自分类Dev

使用正则表达式从字符串中获取子字符串

来自分类Dev

从字符串获取子字符串的正则表达式

来自分类Dev

正则表达式(搜索功能(@“字符串内容”)以获取“字符串内容”

来自分类Dev

正则表达式从字符串中获取字符串

来自分类Dev

使用正则表达式从字符串日期获取子字符串

来自分类Dev

使用正则表达式获取多个可能字符串的子字符串

来自分类Dev

使用正则表达式从输入字符串中获取键值字符串?

来自分类Dev

正则表达式从字符串中获取子字符串

来自分类Dev

从主字符串获取子字符串的正则表达式

来自分类Dev

正则表达式 - 获取 2 个字符串之间的字符串

来自分类Dev

正则表达式之间切字符串

来自分类Dev

使用正则表达式匹配字符串?

来自分类Dev

正则表达式区分字符串键

来自分类Dev

逗号分隔字符串的正则表达式

Related 相关文章

  1. 1

    正则表达式 - 忽略部分字符串

  2. 2

    使用正则表达式获取用特殊字符括起来的字符串部分

  3. 3

    如果部分匹配正则表达式,则获取整个字符串

  4. 4

    用于获取字符串部分的正则表达式

  5. 5

    如何使用正则表达式获取字符串的特定部分

  6. 6

    正则表达式 - 获取字符串的特定部分

  7. 7

    如何使用正则表达式只获取字符串的特定部分?

  8. 8

    通过正则表达式从正则表达式添加字符串

  9. 9

    正则表达式:为字符串编辑正则表达式

  10. 10

    如何获取正则表达式以返回字符串(不是正则表达式对象)?

  11. 11

    在C#中使用正则表达式(正则表达式)从字符串获取值

  12. 12

    正则表达式:获取字符串的匹配部分和“不匹配”部分

  13. 13

    从正则表达式获取字符串中的字符串

  14. 14

    正则表达式(搜索功能(@“字符串内容”)以获取“字符串内容”

  15. 15

    正则表达式在子字符串之前获取子字符串

  16. 16

    使用正则表达式从字符串中获取子字符串

  17. 17

    从字符串获取子字符串的正则表达式

  18. 18

    正则表达式(搜索功能(@“字符串内容”)以获取“字符串内容”

  19. 19

    正则表达式从字符串中获取字符串

  20. 20

    使用正则表达式从字符串日期获取子字符串

  21. 21

    使用正则表达式获取多个可能字符串的子字符串

  22. 22

    使用正则表达式从输入字符串中获取键值字符串?

  23. 23

    正则表达式从字符串中获取子字符串

  24. 24

    从主字符串获取子字符串的正则表达式

  25. 25

    正则表达式 - 获取 2 个字符串之间的字符串

  26. 26

    正则表达式之间切字符串

  27. 27

    使用正则表达式匹配字符串?

  28. 28

    正则表达式区分字符串键

  29. 29

    逗号分隔字符串的正则表达式

热门标签

归档