2012-02-13 2 views
0

Я когда-то построил программу в PHP, который используется очень конкретные регулярные выражения для сопоставления ссылок, однако, что картина не кажется, что работать в Java, Im пытаясь найти Java эквивалентJava регулярные выражения, соответствующие конкретные адреса

"~http://(bit.ly|t.co)~" 

в php это соответствовало бы ссылкам, таким как http://t.co/UURRNlrK и http://bit.ly/AenG5W, что было бы эквивалентом Java?

ответ

1

Я думаю, что вы ищете

String str = "http://t.co/UURRNlrK"; 
String p = "(http://(t\.co|bit\.ly).*)"; 

Pattern pattern = Pattern.compile(p); 
Matcher matcher = pattern.matcher(str); 

if(matcher.find()) 
System.out.println(matcher.group(0)); 

Выход = http://t.co/UURRNlrK

если str = "http://bit.ly/AenG5W"

Выход = http://bit.ly/AenG5W

Вот хороший Regex Tutorial для Java.

1
http://(bit\.ly|t\.co)/\w* 

Я думаю, что это один будет результат такой же, как и верхние

0

Я попытался это:

String str = "http://bit.ly/asdfsd"; 

if(str.matches("http://(bit\.ly|t\.co).+")){ 
    System.out.println("hurray"); 
} 
+1

Точки в матчах для bit.ly и t.co должны быть экранированы, как это "http: // (бит \ .ly | t \ .co). +" В противном случае это также соответствовало бы биту, для пример. – brettw

+0

О да, простите об этом. – JZares

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