给出字符串:“+ 49(0)162 12345 0162”
正则表达式:^(+ \ s * 4 \ s * 9 \ s *(\ s * 0 \ s *)| + \ s * 4 \ s * 9 | 0 \ s * 0 \ s * 4 \ S * 9 | 0 |(\ S * 0 \ S *))\ S *(15 | 16 | 17)
匹配:“+ 49(0)16”
现在我想在16之前更换所有内容,以便产生“162 12345 0162”。
我到目前为止:
Regex regex = new Regex( @"^(\+\s*4\s*9\s*\(\s*0\s*\)|\+\s*4\s*9|0\s*0\s*4\s*9|0|\(\s*0\s*\))\s*(15|16|17)");
string result = regex.Replace( "+49 ( 0 ) 162 12345 0162", "" );
但是返回“2 12345 0162”。
谢谢!
答案 0 :(得分:1)
(15|16|17)
您的模式的一部分 - 第二个捕获组 - 匹配并捕获16
。因此,您需要替换为$2
反向引用。
string result = regex.Replace( "+49 ( 0 ) 162 12345 0162", "$2" );
请参阅regex demo
答案 1 :(得分:0)
最后(15|16|17)
真的有必要吗?删除它将为您提供所需的结果。