正则表达乐趣

时间:2013-07-03 18:55:04

标签: regex

这是我到目前为止所做的:

^/fe/(?:[0-9A-Za-z]{2,30}?/?+)([$|#|\?]+?)

/fe/$1

我需要支持:

  • 将“/ fe / abc123 /#blah”重写为“/ fe /#blah”
  • 将“/ fe / abc123 /?ggg#blah”重写为“/ fe /?ggg#blah”
  • 将“/ fe / abc123#blah”重写为“/ fe /#blah”
  • 将“/ fe / abc123?ggg#blah”重写为“/ fe /?ggg#blah”
  • 将“/ fe / abc123”重写为“/ fe /”
  • 将“/ fe / abc123 /”重写为“/ fe /”

目前正确捕获前4个。 我还有最后两个问题。

你可以在这里玩这个: http://gskinner.com/RegExr/?35ess

任何帮助将不胜感激:)

1 个答案:

答案 0 :(得分:3)

为什么不简单地匹配一个路径元素(除了斜线,散列和问号之外的任何东西),然后是一个可选的斜杠:

Find what: ^/fe/[^/#?]+/?
Replace with: /fe/

Working demo