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

时间:2015-01-20 18:32:40

标签: regex vb.net

我已经编写了以下代码来减少每行中的信息

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

字符串以这样开头:

  

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

我想去

  

/ a / users / 15 /(兼容; 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& params [per_page] = 10& params [set_actions] = true HTTP / 1.1“200 13063”BlackBerry9320 / 7.1.0.398 Profile / MIDP- 2.1配置/ CLDC-1.1 VendorID / 603 tibbr / 3.6.6.1“1/1574070

它无法正常工作似乎无法识别/ a / users / 80021

之后的/

再次感谢您的帮助,我非常了解它。

我也将看看HttpUtility

1 个答案:

答案 0 :(得分:2)

你不应该逃避斜线并匹配第三组:

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

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

或者:

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

DEMO

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

编辑:关于您的第二个正则表达式,出现错误:

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

你不能逃避括号,但是B.,正确的正则表达式可能是:

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