Java - проблема регулярных выражений - PullRequest
1 голос
/ 18 апреля 2010

У меня есть список URL типа

Теперь я хочу узнать только те URL, которые заканчиваются на /pk или /pk/ и не имеют ничего между .com и /pk

Ответы [ 4 ]

1 голос
/ 18 апреля 2010

Непосредственный перевод вашего запроса "[...] URL, которые заканчиваются на / pk или / pk / и не имеют ничего между .com и / pk", с дополнительным предположением, что всегда должен быть ". com ", выдает это регулярное выражение:

Если вы используете find():

\.com/pk/?$

Если вы используете matches():

.*\.com/pk/?

Другие ответы, приведенные здесь, дают более ограничительные шаблоны, позволяя использовать только те URL-адреса, которые ближе к вашим примерам. Особенно мой шаблон не проверяет, что данная строка является синтаксически действительным URL.

1 голос
/ 18 апреля 2010
String pattern = "^http://www.example.com/pk/?$";

Надеюсь, это поможет.

Некоторые детали: если вы не добавите ^ в начало шаблона, то foobarhttp://www.example.com/pk/ также будет принято. Если вы не добавите $ в конец шаблона, то будет принята http://www.exampke.com/pk/foobar.

1 голос
/ 18 апреля 2010

Ваша проблема не полностью определена, поэтому я не могу дать вам точный ответ, но это может быть начало, которое вы можете использовать:

^[^:]+://[^/]+\.com/pk/?$

Эти строки будут соответствовать:

http://www.example.com/pk
http://www.example.com/pk/
https://www.example.com/pk

Эти строки не будут совпадать:

http://www.example.co.uk/pk
http://www.example.com/pk/ca
http://www.example.com/anthingcangoeshere/pk
http://www.example.com/pkisnotnecessaryhere
0 голосов
/ 18 апреля 2010
String pattern = "^https?://(www\.)?.+\\.com/pk/?$";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...