регулярное выражение, не соответствует URL - PullRequest
0 голосов
/ 18 марта 2011

Мне нужно сопоставить слова длиннее 30 символов, но эти слова не могут быть URL-адресами.

Я пытался сделать это, но не работает нормально:

(?<!ftp)([^\s\t\r\n<>]{30})

Ответы [ 2 ]

1 голос
/ 18 марта 2011

У меня есть несколько баллов:

  • Ваше регулярное выражение может соответствовать ftp://example.com, потому что вы используете lookbehind, который ничего не видит перед первым f. Вместо этого используйте предвкушение.
  • Также вам необходимо убедиться, что вы сопоставляете целые слова, в противном случае вы можете найти частичное совпадение в URL.
  • \ s включает в себя \ t, \ n и т. Д., Поэтому последнее является избыточным.
  • Длиннее 30 символов означает 31 или более символов, т.е. {31,}.

Попробуйте вместо этого:

(?<![^\s<>])(?!ftp)([^\s<>]{31,})(?![^\s<>])
0 голосов
/ 18 марта 2011

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

\b(?<!ftp://)\w{30,}\b
...