努力将正则表达式与我的字符串匹配
Posted
技术标签:
【中文标题】努力将正则表达式与我的字符串匹配【英文标题】: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
。所以我想要的只是string1
、string3
和string4
返回true
。有人可以建议我如何使用正则表达式获得它吗?
【问题讨论】:
"我正在尝试完全匹配正则表达式 DRC/TF8" -> 但string1
和 string3
不完全匹配。你能说得更具体点吗?
每个人都在讨论正则表达式,但是当在另一个字符串中找到特定字符串时,我看到一个问题要求true
... 为什么是正则表达式? string.Contains()
有什么问题? (还有为什么字符串是 1/2/4 而不是 3,它还包含您要查找的值?)
好点。但是string.Contains("DRC/TF8")
不也匹配string5
?
【参考方案1】:
我会说这会起作用:
\bDRC\/TF8(?=\.|$)
\b
binds the whole word
(?=\.|$)
是 negative lookahead,它断言单词以 .或者是行尾
查看示例: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
【讨论】:
问题中的示例不太可能详尽无遗。以上是关于努力将正则表达式与我的字符串匹配的主要内容,如果未能解决你的问题,请参考以下文章