C# 匹配0个或多个实例的正则表达式不起作用

C# 匹配0个或多个实例的正则表达式不起作用,c#,regex,C#,Regex,这个问题听起来可能很愚蠢。但我尝试过几种选择,但都不奏效 我在字符串变量中包含以下内容 string myText="*someText*someAnotherText*"; 我上面的意思是,在“someText”之前可以有0个或更多字符。“someText”之后和“someAnotherText”之前可以有0个或多个字符。最后,任何字符在“someAnotherText”之前可能出现0次或更多次 我尝试了以下方法 string res= Regex.Replace(searchFor.ToL

这个问题听起来可能很愚蠢。但我尝试过几种选择,但都不奏效

我在字符串变量中包含以下内容

string myText="*someText*someAnotherText*";
我上面的意思是,在“someText”之前可以有0个或更多字符。“someText”之后和“someAnotherText”之前可以有0个或多个字符。最后,任何字符在“someAnotherText”之前可能出现0次或更多次

我尝试了以下方法

string res= Regex.Replace(searchFor.ToLower(), "*", @"\S*");
string res= Regex.Replace(searchFor.ToLower(), "*", @"\*");
它不起作用。 然后我尝试了以下方法

string res= Regex.Replace(searchFor.ToLower(), "*", @"\S*");
string res= Regex.Replace(searchFor.ToLower(), "*", @"\*");
即使这样也不行

有人能帮忙吗?
尽管我提到了“*”来表示0次或多次出现,但它表示我没有提到出现的次数。

与DOS通配符不同,正则表达式中的
*
字符意味着重复上一项(字符、组等)0次或更多次。在正则表达式中,第一个
*
没有前面的字符,第二个紧跟在
t
字符之后,因此将重复任意次数

要获取“任何字符的0或更多”,您需要使用组合
*
,其中
是“任何字符”,而
*
是“0或更多次”

换句话说,要搜索
someText
,然后再搜索
someAnotherText
,可以使用以下正则表达式:

var re = new Regex(@"someText.*someAnotherText");
请注意,除非您通过将开始/结束说明符放入(
^
作为字符串的开始,
$
作为结束)中来另外指定,否则正则表达式将匹配测试字符串的任何子字符串

对上述各项进行测试,所有结果均为真:

re.IsMatch("This is someText, followed by someAnotherText with text after.");
re.IsMatch("someTextsomeAnotherText");
re.IsMatch("start:someTextsomAnotherText:end");
等等

在正则表达式中,
*
是一个量词。其他量词包括:

?     Match 0 or 1
+     Match 1 or more
{n}   Match 'n' times
{n,}  Match at least 'n' times
{n,m} Match 'n' to 'm' times
所有条款均适用于正则表达式中的前一条款


在另一个量词(包括
)后面放置一个
)将把它转换为惰性形式,在这种形式下,它将尽可能少地匹配项目。这将允许以下术语也与您指定的术语匹配。

与DOS通配符不同,正则表达式中的
*
字符意味着重复上一项(字符、组等)0次或更多次。在正则表达式中,第一个
*
没有前面的字符,第二个紧跟在
t
字符之后,因此将重复任意次数

要获取“任何字符的0或更多”,您需要使用组合
*
,其中
是“任何字符”,而
*
是“0或更多次”

换句话说,要搜索
someText
,然后再搜索
someAnotherText
,可以使用以下正则表达式:

var re = new Regex(@"someText.*someAnotherText");
请注意,除非您通过将开始/结束说明符放入(
^
作为字符串的开始,
$
作为结束)中来另外指定,否则正则表达式将匹配测试字符串的任何子字符串

对上述各项进行测试,所有结果均为真:

re.IsMatch("This is someText, followed by someAnotherText with text after.");
re.IsMatch("someTextsomeAnotherText");
re.IsMatch("start:someTextsomAnotherText:end");
等等

在正则表达式中,
*
是一个量词。其他量词包括:

?     Match 0 or 1
+     Match 1 or more
{n}   Match 'n' times
{n,}  Match at least 'n' times
{n,m} Match 'n' to 'm' times
所有条款均适用于正则表达式中的前一条款


在另一个量词(包括
)后面放置一个
)将把它转换为惰性形式,在这种形式下,它将尽可能少地匹配项目。这将允许以下术语也与您指定的术语匹配。

匹配任何字符的0次或多次出现的正则表达式为

*

其中,
匹配任何单个字符,
*
匹配该字符的零次或多次出现


(此答案是当前答案的快速参考简化。)

匹配任何字符的0次或多次出现的正则表达式为

*

其中,
匹配任何单个字符,
*
匹配该字符的零次或多次出现


(此答案是当前答案的快速参考简化。)

string res=Regex.Replace(searchFor.ToLower(),@“\*”,@“*”我调试过,注意到它从字符串searchFor中删除了“someText”和“someAnotherText”。我想保持现状。谢谢@Avinash Raj!:)<代码>字符串res=Regex.Replace(searchFor.ToLower(),@“\*”,@“.*”我调试过,注意到它从字符串searchFor中删除了“someText”和“someAnotherText”。我想保持现状。谢谢@Avinash Raj!:)
$
的用途是什么?@Vikrant
$
是输入结束时的正则表达式标记。如果将其放在表达式的末尾,则表达式将只与输入的结尾匹配。
$
有什么用?@Vikrant
$
是输入结尾的正则表达式标记。如果将其放在表达式的末尾,则表达式将只匹配到输入的末尾。