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:(.*)”)来完成您的模式,以找到我的关键字转换器。