我有以下输入:
ODU4 (PT=21)/ODU3 (PT=20)/ODU2 (PT=20)/ODU1 (PT=20)/ODU0
我想通过正则表达式对其进行过滤,这将导致以下输出:
"PT21/PT20/PT20/PT20"
我不是创建正则表达式的专家,看起来有点棘手,所以请帮助我。
我可以使用以下正则表达式提取PT=21
和其他PT=XX
子字符串:
\(.*?\)
答案 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