2014-01-27 4 views
0

Я пытаюсь извлечь часть URL-адреса в текстовые файлы.Извлечение части URL с использованием регулярного выражения java

, например:

/p/gnomecatalog/bugs/search/?q=status%3Aclosed-accepted+or+status%3Awont-fix+or+status%3Aclosed" class="search_bin"><span>Closed Tickets</span></a> 

Я хотел бы извлечь только

/p/gnomecatalog/bugs/search/?q=status%3Aclosed-accepted+or+status%3Awont-fix+or+status%3Aclosed 

КАК Я мог бы сделать это с использованием регулярных выражений. Я пробовал с регулярным выражением

"/p/*./bugs/*." 

но это не сработало.

+0

попробуйте этот« ^. * \ "\\ s" –

+1

Это выглядит как HTML. Если вы делаете это ради удовольствия, то что бы то ни было, но если вам нужна какая-то стабильность, я предлагаю вам использовать парсер HTML. Jsoup - одна из таких библиотек. – nhahtdh

ответ

0

Попробуйте это:

"\/p.*\/bugs[^"]*" 

это означает: "/ р"

тогда: все СИМВОЛОВ,

затем: "/ ошибки",

тогда: все символы, кроме "

0

Вы можете использовать:

(\/p\/.*\/bugs\/.*?(?=")) 

Java код:

 String REGEX = "(\\/p\\/.*\\/bugs\\/.*?(?=\"))"; 
     Pattern p = Pattern.compile(REGEX); 
     Matcher m = p.matcher(line); 
     while (m.find()) { 
       String matched = m.group(); 
       System.out.println("Mached : "+ matched); 

      } 

ВЫВОД

Mached : /p/gnomecatalog/bugs/search/?q=status%3Aclosed-accepted+or+status%3Awont-fix+or+status%3Aclosed 

DEMO

Объяснение: enter image description here

+0

Спасибо! это помощь – Tech

+0

@SultanAlQahtani: Это работает? –

+0

да это большое спасибо – Tech

0

Вот еще один способ: (? Я)

(?i)/p/[a-z/]+bugs/[^ "]+ 

в начале делает дело регулярное выражение нечувствительным, поэтому вам не придется беспокоиться об этом. Затем после ошибок/он будет продолжаться до тех пор, пока он не достигнет пробела или «

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