【问题标题】:Struggling to match exact regex to my strings努力将正则表达式与我的字符串匹配
【发布时间】:2021-10-09 10:51:55
【问题描述】:

我有这些字符串

string1 = CD.TR.DRC/TF8
string2 = CD.TR.DRC/TF8/A8
string3 = CD.TR.DRC/TF8.PB
string4 = DRC/TF8
string5 = DDRC/TF8

我正在尝试完全匹配正则表达式DRC/TF8。所以我想要的只是string1string3string4 返回true。有人可以建议我如何使用正则表达式获得它吗?

【问题讨论】:

  • "我正在尝试完全匹配正则表达式 DRC/TF8" -> 但 string1string3 不完全匹配。你能说得更具体点吗?
  • 每个人都在讨论正则表达式,但是当在另一个字符串中找到特定字符串时,我看到一个问题要求true... 为什么是正则表达式? string.Contains() 有什么问题? (还有为什么字符串是 1/2/4 而不是 3,它还包含您要查找的值?)
  • 好点。但是string.Contains("DRC/TF8") 不也匹配string5

标签: c# regex


【解决方案1】:

我会说这会起作用:

\bDRC\/TF8(?=\.|$)

查看示例:https://regexr.com/634a3

C#的详细语法可以在this post找到。

【讨论】:

  • (?=\.|$) 真的有必要吗? \b 似乎足够了,如果不是,那么您可以放弃\b
  • 是的我猜,否则它也需要string2
  • 哦,对了,谢谢你的回复。但是,(?=\.|$) 之前的 \b 就不再需要了。
  • 嗯,你可能是对的。如有必要,将检查并更新我的答案
【解决方案2】:

根据您当前的示例,您可以使用此模式:(?<=\.|^)DRC\/TF8(?=\.|$)

代码:

using System;
using System.Text.RegularExpressions;

public class Test{
    public static void Main(){
        string pattern = @"(?<=\.|^)DRC\/TF8(?=\.|$)";  
        Regex re = new Regex(pattern);  
        string[] text = {"CD.TR.DRC/TF8", "CD.TR.DRC/TF8/A8", "CD.TR.DRC/TF8.PB", "DRC/TF8", "DDRC/TF8"};
        foreach(string str in text){
            if (re.IsMatch(str)){
                Console.WriteLine(str);
            }
        }
    }
}

输出:

CD.TR.DRC/TF8
CD.TR.DRC/TF8.PB
DRC/TF8

【讨论】:

  • 问题中的示例不太可能详尽无遗。
猜你喜欢
  • 2019-05-01
  • 2013-10-18
  • 2022-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多