2013-07-03 2 views
-1

Это то, что я до сих пор:Regular Expression Fun

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

с /fe/$1

мне нужно поддерживать:

  • переписывания "/ Fe/ABC123/# бла" в "/fe/# blah "
  • rewriting"/fe/abc123 /? ggg # blah "to"/fe /? ggg # blah "
  • переписывание"/fe/abc123 # blah " к "/ Fe/# бла"
  • переписывания "/ Fe/абв123? ггг # бла" в "/ Fe /? ггг # бла"
  • переписывания "/ Fe/абв123" до "/ Fe /"
  • переписывание "/ fe/abc123 /" to "/ fe /"

В настоящее время первые 4 зафиксированы правильно. У меня все еще проблема с двумя последними.

Вы можете играть с этим здесь: http://gskinner.com/RegExr/?35ess

Любая помощь будет оценена :)

+1

Так будет трудность, насколько близко у наше текущее регулярное выражение, которое не соответствует этому? –

+0

Часть '([$ | # | \?] +?)' Должна быть '([$ | # | \?] +)?'. '' 'Прямо после' + 'делает его неживым. То, что вам кажется желательным, - это сделать матч до того, как он станет необязательным. – acdcjunior

ответ

3

Почему просто не совпадают один путь-элемент (все для косых черт, хэши и вопросительных знаков, за исключением), а затем дополнительный слэш:

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

Working demo

+0

Простой и делает то, что мне нужно - Большое спасибо !!! – itkoren