正则表达式所需的输出

时间:2015-07-19 10:28:38

标签: c# regex

我有以下输入:

ODU4 (PT=21)/ODU3 (PT=20)/ODU2 (PT=20)/ODU1 (PT=20)/ODU0

我想通过正则表达式对其进行过滤,这将导致以下输出:

"PT21/PT20/PT20/PT20"

我不是创建正则表达式的专家,看起来有点棘手,所以请帮助我。

我可以使用以下正则表达式提取PT=21和其他PT=XX子字符串:

\(.*?\)

1 个答案:

答案 0 :(得分:1)

您可以捕获圆括号内的文本,然后加入它们。

在C#中,您可以这样做:

var rx = new Regex(@"(?<=\()[^()]*(?=\))");
var vals = rx.Matches(str).Cast<Match>().Select(p => p.Value).ToList();
var res = string.Join("/", vals);

以下是regex demo

您也可以尝试使用Regex.Replace

获取结果
var rx = new Regex(@"(/?)[^()]*\(([^()]*)\)|/[^()/]*$");
var res = rx.Replace(str, "$1$2");

请参阅demo