正则表达式查找搜索结束字段然后删除其余行

时间:2015-01-10 23:41:27

标签: regex vb.net replace

您好我一直在寻找一个正则表达式我可以找到大部分即时通讯但不太正确。

我试图使用正则表达式找到替换,我可以开始工作,但不是我想要的方式。

我正在搜索的一个例子是


10次/ 01 / 14PUT /一个/用户/ 84335httpetcetcetcete

10次/ 01 / 14GET /一个/用户/ 663 /徽章?thisisatest

10次/ 01 / 14GET /一个/用户/ 8836:thisisatestetc


我想要做的是和用户数字的结尾如下所示%i暂时放入我想要删除其余部分。


10次/ 01 / 14PUT /一个/用户/ 84335%httpetcetcetcete

10次/ 01 / 14GET /一个/用户/ 663%/徽章?thisisatest

10次/ 01 / 14GET /一个/用户/ 8836%:thisisatestetc


我一直在使用s = s.regex.replace(s,“a / users / \ d *”,“”)

但是这显然不起作用,到目前为止如此接近。

感谢任何帮助。

非常感谢,VBVirg

3 个答案:

答案 0 :(得分:1)

如何:s = s.regex.replace(s, "(a/users/\d*).*", "\1")

这会将“a / users /(digits)”字符串保存到变量(\1),因此不会被replace函数删除。

答案 1 :(得分:1)

我认为以下内容可以满足您的需求:

s = Regex.Replace(s, "^(.*\/users\/\d*).*$", "$1")

它的工作原理是捕获您感兴趣的字符串部分,并用仅捕获的部分替换整个字符串。

答案 2 :(得分:1)

你实际上是在正确的轨道上,你提出的正则表达式几乎是你所需要的:

a/users/\d*

但你的电话实际上是用空格替换你想保留的东西。

你正在寻找的正则表达式更像是这样:

(a\/users\/\d*).*$

您可以在Replace()方法中使用它,如下所示:

s = Regex.Replace(s, "(a\/users\/\d*).*$", "$1") />

$1是对捕获组的反向引用(括号中正则表达式的一部分)。那么这样做是将字符串匹配正则表达式的任何部分,并将其替换为捕获组中的内容。