正则表达式 VB.net 我应该分组吗?

Regex VB.net Should I Group?

我写了下面的代码来减少每行中的信息

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

字符串开头如下:

/a/users/15/badges?params%5Bnotifications%5D%5Bcount%5D=5 HTTP/1.1" 200 143 "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)"

我正在努力

/a/users/15/ (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)"

我错了吗?如果有人能提供帮助,我将不胜感激。


当我尝试这个时:

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

对以下行进行排序

/a/users/80021/messages.json?params[page]=1¶ms[per_page]=10¶ms[set_actions]=true HTTP/1。 1" 200 13063 "BlackBerry9320/7.1.0.398 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/603 tibbr/3.6.6.1" 1/1574070

它不起作用它似乎无法识别 /a/users/80021

之后的 /

再次感谢您的帮助,我学到了很多东西。

我也会看看 HttpUtility

你不应该转义斜线并匹配第三组:

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

您还需要以 .* 结束正则表达式,以确保删除剩余的字符。

或者:

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

DEMO.

但正如@Cory 所说:最好使用库实现的算法,例如 HttpUtility,因为这些算法是按照所有规范设计的,不太可能包含错误。

编辑:关于你的第二个正则表达式,有一个错误:

s = Regex.Replace(s, "(a\/users\/\d*).*(\Blackberry\.*).*"," ")

你没有转义括号,但是B.,正确的正则表达式可能是:

s = Regex.Replace(s, "(a\/users\/\d*/).*(Blackberry.*).*"," ")