我是正则表达式的新手,想知道在另一个字符串中是否存在通配符字符串的模式?
例如:
如果* 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
}
答案 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
选项。