正则表达式忽略了String的一部分--Java

时间:2016-06-14 22:16:38

标签: java regex

我正在解析IP,我不关心任何事情,而是IP。这就是我所拥有的,但我不关心'10'之后的内容,只想知道字符串是否与IP匹配:

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

我可以添加什么来让它忽略其他一切?这个IP每次都会在字符串的最开头。

1 个答案:

答案 0 :(得分:1)

如果您的字符串以特定的 IP模式开头,并且您使用的是String#matches(),则只需在10之后附加字边界,然后在其后使用.*

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

添加(?s)以确保您匹配可以包含换行符的整个字符串。

您可以使用\b(?!\d))来禁止以"(?!\\d)"而不是100结尾的匹配IP,而不是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.*"