C# 正则表达式可选字符

C# 正则表达式可选字符,c#,regex,C#,Regex,上面的几行只是一个文本文件中10行文字的两行。我迭代这个文本文件,想知道是否有一个正则表达式可以覆盖上面所示的两种场景 目标字符串是“test123”和“实际字符串”。有没有一种方法可以告诉正则表达式在“{0}”出现时不要拉入它?您可以使用: string = myfx("{0}test123", test); string2 = myfx("actual string"); 您只需使用: string = myfx("{0}test123", test); string2 = myfx("a

上面的几行只是一个文本文件中10行文字的两行。我迭代这个文本文件,想知道是否有一个正则表达式可以覆盖上面所示的两种场景

目标字符串是“test123”和“实际字符串”。有没有一种方法可以告诉正则表达式在“{0}”出现时不要拉入它?

您可以使用:

string = myfx("{0}test123", test);
string2 = myfx("actual string");
您只需使用:

string = myfx("{0}test123", test);
string2 = myfx("actual string");

要查找不在花括号内的所有文本,请使用正则表达式:

string myfx = "{0}test123";
Regex regex = new Regex("(test123|actual string)");
string capturedValue = regex.Match(myfx).Captures[0].Value;

这种方法仍然有局限性。它假定花括号是成对的。尽管需要做更多的工作,它可以变得简单,但我希望它适合您的情况。

要查找所有不在花括号内的文本,请使用正则表达式:

string myfx = "{0}test123";
Regex regex = new Regex("(test123|actual string)");
string capturedValue = regex.Match(myfx).Captures[0].Value;
这种方法仍然有局限性。它假定花括号是成对的。虽然需要做更多的工作,但它可以做到万无一失,我希望它适合你的情况。

编辑:M42是对的,环视仪不起作用

也许:

"Blah "
" Blih "
" Bluh"
string input=“{9}test123”//“常规字符串”
变量模式=@“(?>\{\d\}”)(?[^”“]+);
var match=Regex.match(输入,模式);
字符串结果=match.Groups[“target”].ToString();
编辑:M42是对的,周围的人不工作

也许:

"Blah "
" Blih "
" Bluh"
string input=“{9}test123”//“常规字符串”
变量模式=@“(?>\{\d\}”)(?[^”“]+);
var match=Regex.match(输入,模式);
字符串结果=match.Groups[“target”].ToString();

如果这是显而易见的,那么很抱歉,但是什么是
myfx
?所以您希望匹配字符串“test123”和“实际字符串”。。{0}和它有什么关系?那么,您正试图解析C#的一个非常特定的子集?您想要获取的字符串的具体规则是什么?这些线条到底是什么样的?你尝试过什么?除非myfx是字符串。伪装的格式?你想在
myfx(“{0}实际的{1}字符串{2}”)
很抱歉这是显而易见的,但是什么是
myfx
?所以您希望匹配字符串“test123”和“实际字符串”。。{0}和它有什么关系?那么,您正试图解析C#的一个非常特定的子集?您想要获取的字符串的具体规则是什么?这些线条到底是什么样的?你尝试过什么?除非myfx是字符串。伪装的格式?你想在
myfx(“{0}实际的{1}字符串{2}”)
中捕获什么?这有点太字面化了Eric,你无法计算所有的几十行都包含完全相同的文本。这有点太字面化了Eric,你不能计算所有的几十行包含完全相同的文本。你的正则表达式匹配
中的“oops!”“Blah{oops!}Bleh{1}Bloh”
,尽管它在花括号内。如果你可以假设大括号总是正确配对的,这就是你所需要的:
[^{}+(?![^{}]*})
。但我不认为OP是这样要求的。你的正则表达式匹配
“Blah{oops!}Bleh{1}Bloh”
中的“oops!”,尽管它在花括号内。如果你可以假设大括号总是正确配对的,这就是你所需要的:
[^{}+(?![^{}]*})
。但我不认为这是OP所要求的。不匹配
实际字符串
,因为其中有空格。不匹配
实际字符串
,因为其中有空格。