匹配文字字符串,但允许某些字符丢失

时间:2015-05-28 19:52:00

标签: regex

最后我决定从“haystack”中删除无效字符,因为标准正则表达式无法实现

我必须捕获以下"Capture... Test: Something",我必须匹配的文字字符串"Capture... Test Something"

问题是匹配失败的原因是:丢失,:可能是之前从文字字符串(*, /, ?, :, ", <, >, |)

中删除的几个字符"Capture... Test Something"之一

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

注意:我唯一可以用来匹配的是"Capture... Test Something",最后我需要返回"Capture... Test: Something"的匹配

我无法修改“Capture ... Test Something”

我正在尝试使用http://kodi.wiki/view/Scrapers来匹配标题

1 个答案:

答案 0 :(得分:0)

如果你有一个匹配的输入字符串,你可以通过首先转义字符串,然后在你想要选择的字符后放置可选的量词来构造一个正则表达式:

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);

检查demo here

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

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);

Demo