正则表达式模式,用于在字符串

时间:2017-07-28 12:09:01

标签: c# regex

我是正则表达式的新手,想知道在另一个字符串中是否存在通配符字符串的模式? 例如:
如果* main_string中的search_string(如果主字符串以search_string结尾)
如果是main_string中的search_string *(如果主字符串以search_string开头) 如果在main_string中有* search_string *(如果主字符串包含search_string) 如果main_string中的search_string(如果主字符串本身是search_string)

search_string可以是任何字符串,即使是这样的字符串"(13786213"或" 34576(13786213",在任何情况下都应该适用于字符串?

我尝试了这个,但不是通用的,它失败了"(13786213"案例等等。

string search_string = search_string.Replace("*", ".*?");
if(new Regex(search_string.ToLower()).IsMatch(main_string))
{
   \\success
}

1 个答案:

答案 0 :(得分:3)

您可以使用*拆分,然后转义每个块,然后加入.*?

var search_string = string.Join(".*", search_string.Split('*').Select(v => Regex.Escape(v)));

然后,要进行不区分大小写的搜索,请使用Regex标记编译RegexOptions.IgnoreCase对象。

这是C# demo

var search_string = "(137*86213";
search_string = string.Join(".*", search_string.Split('*').Select(v => Regex.Escape(v)));
if(Regex.IsMatch("(137 text here 86213", search_string, RegexOptions.IgnoreCase))
{
   Console.Write("success");
}
// => success

如果输入字符串可以包含换行符,还要添加RegexOptions.Singleline选项。