2016-06-14 7 views
1

Я разбираю IP, и мне все равно, но IP. Вот что у меня есть, но я не волнует, что следует за «10», и просто хочу знать, если строка соответствует IP:Regex игнорировать часть строки - Java

[0-9]{1,3}\\.[0-9]{1,3}\\.(16|249)\\.10 

Что я могу добавить в это, чтобы сделать его игнорировать все еще? Этот IP-адрес также будет в самом начале строки каждый раз.

+1

Добавить '. *' После '10'? Как выглядит ваша строка? Как вы используете регулярное выражение? –

+1

Возможно, вы хотите использовать лучшее регулярное выражение. https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9780596802837/ch07s16.html –

+1

@Wiktor Stribizew, который сработал! Спасибо – Dominic

ответ

1

Если строка начинается с конкретных IP модели, и вы используете String#matches(), просто добавьте границу слова после 10 и использовать .* после него:

"(?s)\\d{1,3}\\.\\d{1,3}\\.(?:16|249)\\.10\\b.*" 

(?s) добавляется, чтобы убедиться, будет соответствовать всей строке, которая может содержать символы новой строки.

Вместо \b вы можете использовать (?!\d) ("(?!\\d)"), чтобы запретить соответствие IP-адреса, заканчивающиеся 100, а не 10.

ПРИМЕЧАНИЕ, что первая и вторая части (\\d{1,3}) может быть повышена за счет замены их (?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?) и регулярное выражение будет выглядеть "(?s)(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(?:16|249)\\.10\\b.*".