gpt4 book ai didi

java - 如何重复捕获组?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:05:34 24 4
gpt4 key购买 nike

我正在尝试编写用于验证 IP 地址的正则表达式。

虽然这有效:

String reg = "((0|1)?\\d{1,2}|2[0-4]\\d|25[0-5])";
public String pattern = reg + "." + reg + "." + reg + "." + reg;

这似乎不起作用,我不明白哪里出了问题。

String pattern = "((0|1)?\\d{1,2}|2[0-4]\\d|25[0-5]\\.){3}((0|1)?\\d{1,2}|2[0-4]\\d|25[0-5])";

请解释我错过了什么。

最佳答案

您没有正确分组:点 \\.25[0-5] 生产的一部分,因此它不会在中间匹配除非地址完全由 25x 组件组成。

您的第一个正则表达式没有这个问题,因为在分组括号外添加了点。但是,点不会被转义,这意味着表达式将匹配一些不正确的字符串和正确的字符串(例如 123a210b132c210)

在您的数字作品周围添加括号可解决此问题:

(((0|1)?\d{1,2}|2[0-4]\d|25[0-5])\.){3}((0|1)?\d{1,2}|2[0-4]\d|25[0-5])
//^ ^

Demo.

关于java - 如何重复捕获组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38313996/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com