C# 正则表达式包含特定的单词
我试着写一个正则表达式。C# 正则表达式包含特定的单词,c#,regex,C#,Regex,我试着写一个正则表达式。 考虑此字符串[转换器:mystringornotmystring] 我想要获取mystringornotmystring 看到我的坏代码了吗 regEx = new Regex(@"\[((?:.|\n)*?).\]"); foreach (Match m in regEx.Matches(stb.ToString())) { myfunction (m.Value);
考虑此字符串
[转换器:mystringornotmystring]
我想要获取mystringornotmystring
看到我的坏代码了吗
regEx = new Regex(@"\[((?:.|\n)*?).\]");
foreach (Match m in regEx.Matches(stb.ToString()))
{
myfunction (m.Value);
}
[converter:]是关键字
你能帮我完成我的正则表达式吗,
谢谢Cédirc,鉴于您的评论,这里有点不清楚您需要什么:
我的字符串可以包含很多“[converter:xxx]” 然而,根据最初的问题,如果我们只讨论这个字符串的一个实例,那么您需要的模式比您最初的尝试更简单 我假设您不在乎关键字是什么,因为您在初始尝试中没有解决这个问题-您只想从字符串中提取“参数” 基本上,您需要的是一个
[
后跟一些字符(我们不在乎是什么),然后是:
然后是一些字符(我们想要识别),然后是]
regEx = new Regex(@"\[.*:(.*)\]");
foreach (Match m in regEx.Matches(stb.ToString()))
{
myfunction (m.Value);
}
要做的第一件事(正确处理)是匹配开头的[
。这是正则表达式中的一个特殊字符,因此需要转义-\[
要识别单个字符(当我们不关心字符是什么时),我们使用点(.)
当我们想要识别一个以上的东西时,我们必须告诉正则表达式有多少个-我们通过应用“基数”来实现。A*表示零或多个,A+表示一个或多个。还有其他更具体的方法来说明匹配的数量,我让你查一下。还有“贪婪”和“懒惰”基数的不同版本-但让我们继续讨论手头的问题
所以-*
表示零个或多个字符。
而\[.*
表示后跟零个或多个字符的[
然后指定:
。这是要匹配的特定字符
所以-[\.*:
表示一个[
后跟零个或多个字符,然后是一个:
这很容易,对吧
现在,为了完成该模式,我们需要另一组零个或多个字符和一个结束符]
(我们将其转义)
\[.*:.\]
我们使用括号()
来包围要“捕获”的组。在本例中,我们只想捕获第二组零个或更多字符:
\[.*:(.*)\]
就在这里
请查看L.Gutgart留给您的链接-其中有很多信息,您可能会发现这些信息在将来很有用
您还可以在网站上测试您的模式,例如。仅使用
“:(\\s)”有什么用?[converter:mystringornotmystring].split(“:”)也可以将字符串拆分为两部分。我的字符串可能包含很多“[converter:xxx]”因此,我不能使用拆分函数这里我们有另一个give me ze code
问题。这是一个很好的详细正则表达式解释。非常感谢。我用regex=new regex(@“[converter:(.*)”)来完成您的模式,以找到我的关键字转换器。