正则表达式可提取所需结果的99%。
这是我的台词:
客户服务代表(CS)(TM PM *)**
*可以有更多参数。示例(TM PM TR)等
**可以带有更多的括号。示例(TM PM)(RI)(AB CD)等
除了第一个括号(CS in this case)
是第1组外,我在第2组中可以具有任意数量的括号和这些括号内的任意参数。
我的尝试产生了预期的结果,但带有括号
(\(.*?\))\s*(\(.*?\).*)
我的结果:
我想要的结果:
group 1 : CS
group 2 : if gg yiy rt jfjfj jhfjh uigtu
我需要帮助从结果中删除那些括号。
我的尝试
\((.*?)\)\s*\((.*?\).*)
这给了我
有人可以帮我吗?我也需要从第2组中删除所有括号。我已经使用了很长时间,但找不到办法。谢谢。
答案 0 :(得分:1)
您不能使用单个匹配操作来匹配不相交的文本部分。当您需要重复组时,甚至无法使用替换方法来捕获组。
您需要执行后处理步骤,以从第2组值中删除(
和)
。
因此,在使用当前方法进行匹配之后,请使用
从第2组值中删除所有(
和)
Group2value = Group2value.Replace("(", "").Replace(")", "");
答案 1 :(得分:0)
这是一种使用字符串拆分和基本字符串函数的方法:
string input = "(CS) (if gg yiy rt) (jfjfj) (jhfjh uigtu)";
string[] parts = Regex.Split(input, "\\) \\(");
string grp1 = parts[0].Replace("(", "");
parts[0] = "";
parts[parts.Length - 1] = parts[parts.Length - 1].Replace(")", "");
string grp2 = string.Join(" ", parts).Trim();
Console.WriteLine(grp1);
Console.WriteLine(grp2);
CS
if gg yiy rt jfjfj jhfjh uigtu