gpt4 book ai didi

python - 正则表达式中多个字符的重复累积和恒定(python)

转载 作者:行者123 更新时间:2023-12-01 08:38:45 24 4
gpt4 key购买 nike

我想搜索以 1、2 或 3 位数字开头,然后以空格 和破折号 - 组合继续的表达式。但是,表达式的长度最多必须为 4 个字符,给出以下可能的组合:“123-”、“1-”、“66-”等。我确信问题已经在某处有了答案,但我似乎无法简洁地阐述我的问题以找到任何东西。

简而言之,以下类型的表述是理想的:[0-9]{1,3}[ -]{1,3}{{4}} 其中 4表示总和不能超过4。

当然,我随时可以输入 [0-9][ -]{3}|[0-9]{2}[ -]{2}|[0-9]{3}[ - ],但是,尽管它在这种情况下完成了工作,但列出较长字符集的所有个别情况很快就会变得令人头疼。

最佳答案

您可以使用

String regex = "\\b\\d{1,3}[ -]{1,3}(?<=\\b\\d[\\d -]{3})";

详细信息

  • \b - 单词边界(如果数字可以粘贴到字母或 (?<!\d) 上,则可以替换为 _ )
  • \d{1,3} - 1 到 3 位数字
  • [ -]{1,3} - 1 到 3 个空格或连字符
  • (?<=\\b\\d[\\d -]{3}) - 正向后查找,要求紧邻当前位置的左侧必须有一个数字,然后是 3 个数字、空格或连字符。

查看此Java demo .

String s = "123-      1 -  66 -  ";
Pattern pattern = Pattern.compile("\\b\\d{1,3}[ -]{1,3}(?<=\\b\\d[\\d -]{3})");
Matcher matcher = pattern.matcher(s);
while (matcher.find()){
System.out.println("'" + matcher.group(0) + "'");
}

输出:

'123-'
'1 - '
'66 -'

关于python - 正则表达式中多个字符的重复累积和恒定(python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53581905/

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