Regex 匹配文字字符串,但允许缺少某些字符

Regex 匹配文字字符串,但允许缺少某些字符,regex,Regex,最后,我决定从“草堆”中去掉无效字符,因为这在标准正则表达式中是不可能的 我必须捕获以下“捕获…测试:某物”我必须匹配的文本字符串是“捕获…测试某物” 问题是匹配失败的原因是:缺少:,可能是先前从文本字符串“捕获”中删除的少数字符(*,/,?,:,,,,,;)之一。。。测试某些东西“ 如何允许捕获文字字符串,但允许上面列出的几个字符不匹配 注意:我唯一可以用来匹配的是“捕获。。。测试一些东西“,最后我需要返回一个匹配的”捕获。。。测试:某物“ 我无法修改“捕获…”。。。“测试一下” 我正在尝试使

最后,我决定从“草堆”中去掉无效字符,因为这在标准正则表达式中是不可能的

我必须捕获以下
“捕获…测试:某物”
我必须匹配的文本字符串是
“捕获…测试某物”

问题是匹配失败的原因是:缺少:,可能是先前从文本字符串
“捕获”中删除的少数字符
(*,/,?,:,,,,,;)
之一。。。测试某些东西“

如何允许捕获文字字符串,但允许上面列出的几个字符不匹配

注意:我唯一可以用来匹配的是
“捕获。。。测试一些东西“
,最后我需要返回一个匹配的
”捕获。。。测试:某物“

我无法修改“捕获…”。。。“测试一下”


我正在尝试使用来匹配标题

如果您有一个要匹配的输入字符串,您可以从中构造一个正则表达式,方法是首先对字符串进行转义,然后在要使其成为可选的字符后放置可选的量词:

var search = "Capture... Test: Something";
var input = "Capture... Test Something";

search = Regex.Escape(search);
search = Regex.Replace(search, @"[*/?:""<>|]", "$0?");

var match = Regex.Match(input, search);
var search=“捕获…”。。。测试:某物”;
var input=“捕获…”。。。测试某物”;
search=Regex.Escape(search);
search=Regex.Replace(search,@“[*/?:”“|]”,“$0?”);
var match=Regex.match(输入,搜索);
检查一下

另一种方法是从两个字符串中删除所有可选字符,然后检查这些字符:

var search = "Capture... Test: Something";
var input = "Capture... Test Something";

search = Regex.Replace(search, @"[*/?:""<>|]", string.Empty);
input = Regex.Replace(input, @"[*/?:""<>|]", string.Empty);

var index = input.IndexOf(search);
var search=“捕获…”。。。测试:某物”;
var input=“捕获…”。。。测试某物”;
search=Regex.Replace(search,@“[*/?:”“|]”,string.Empty);
input=Regex.Replace(输入@“[*/?:”“|]”,string.Empty);
var index=input.IndexOf(搜索);

@anubhava:遗憾的是,这行不通,我无法修改“捕获…”。。。试验“这没有道理。如果删除
,它将不再存在。除非有原始字符串,否则无法确定它是否存在。你也不能简单地在你的比赛中插入
:你不知道它最初是否在那里。强制插入它,不管它最初是否存在,实际上只是意味着
返回haveMatch?“捕获…测试:某物”:null,而不实际确定匹配的内容。您必须放弃至少一项要求。@hvd我正在尝试匹配
“捕获…测试:某些东西”
,但我唯一需要处理的是
“捕获…测试某些东西”
无需修改该字符串,我可以对其执行任何操作。您可以复制该字符串并修改副本?@Undersilker但您不知道您的
“捕获…测试某物”
是否最初是
“捕获…测试:某物”
,但您说需要将其作为匹配项返回,大概只有当它最初真的是“捕获…测试:某物”的时候。即使不考虑编写代码,您将如何做到这一点?给定
“捕获…测试某物”
“捕获…测试某物”
,您如何确定第一个文件中有一个
,该文件已被删除,而第二个文件中没有?