我有一个正则表达式,可以过滤文本的所有 IP 地址。然而,有一个问题!它获取除前面的文本之外的所有不相关文本。例如,首先使用这个网站:
http://myregexp.com/signedJar.html
制作正则表达式:
(?<=[0-9]{1,4}+\.[0-9]{1,4}+\.[0-9]{1,4}+\.[0-9]{1,4}+)([[^\n][\n]](?![0-9]{1,3}+\.[0-9]{1,3}+\.[0-9]{1,3}+\.[0-9]{1,3}+))*[[^\n]\n]
并输入:
此文本不会被选择 1.1.1.1,但是,此 4.55.62.1 ext 的其余 2.2.22.345 将被选择 32.4.3.1 就好了
您应该看到类似这样的内容:
所以我的问题是,使“不会选择此文本”被选中的最佳方法是什么? (或第一个 IP 之前的任何文本)
最佳答案
我怀疑你让这项工作变得比需要的更加困难。如果你只是想抓取所有的IP地址,为什么不直接匹配呢?例如:
List<String> matchList = new ArrayList<String>();
Pattern p = Pattern.compile("\\b(?:[0-9]{1,3}\\.){3}[0-9]{1,3}\\b");
Matcher m = p.matcher(s);
while (m.find()) {
matchList.add(m.group());
}
关于java - 正则表达式不选择第一次出现的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11802312/