2013-04-05 3 views
1

У меня есть несколько шаблонов ссылок, и мне нужно заменить подстроки внутри этих ссылок. шаблоны Ссылка:RegExp заменить после

  1. "/ all_news"
  2. "/ all_news /"
  3. "/ all_news/стр.1"
  4. "/ all_news/стр.1 /"

Все эти шаблоны означают одно и то же - первая страница страницы новостей без фильтрации.

Поэтому мне нужно:

первый шаблон - включить "/ pageX"

второй шаблон - вставить "pageX"

3-й и 4-й шаблоны - заменить номер страницы

Является ли это возможно только с одним регулярным выражением?

Если да, то, пожалуйста, помогите мне.

Если нет, то у меня есть второй вопрос: Возможно, возможно ли заменить все после "/ all_news" на "/ pageX"?

Я имею в виду следующую логику:

  1. строка начала
  2. нормально, я вижу подстроку "/ all_news"
  3. Я все заменить после "/ all_news", даже если ничего не существует (если строка заканчивается "/all_news ")
  4. Я возвращаю«/all_news/pageX ».

ответ

2

Это сделают это.

'/all_news/page1'.replace(/(.*\/all_news).*/,'$1' + '/pageX'); 

Только один для всех.

У Java есть lookbehind. Это отрицает необходимость в $ 1. Решение выглядит так:

String result = "/all_news/page1"; 
String pattern = "(?<=\\/all_news).*"; 
System.out.println(result.replaceAll(pattern,"/PageX")); 

Cheers.

+1

Вы не сказали, на каком языке ... это JavaScript. Но регулярное выражение/(.*\/all_news).*/ должно использоваться везде (с незначительными изменениями) и конструкцией $ 1. Кроме того, все основные языки имеют аналогичные функции замены. –

+0

awwwww ... lol ... Ive выбрал трудный путь, но это было легче, чем я думал – FiftyStars

+0

Да, я рад, что вам понравилось :) Если это _really_ работает ... (как я никогда не могу быть уверен), вы считаете, вы могли найти время, чтобы пометить ответ? –

Смежные вопросы