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

标签 python regex

我想搜索以 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/

相关文章:

python - 正则表达式匹配完全匹配的子字符串与 Python 中的约束

javascript - 使用正则表达式格式化为 JSON

python - PyPDF2 附加文件问题

python - 具体正则表达式搜索python

python - 如何使用PySpark获取最高tf-idf对应的单词?

javascript - 使用正则表达式将单引号更改为双引号

javascript - 如何修复 ' Argument of type ' 数字“无法分配给类型 'string | RegExp' 的参数”

regex - PostgreSQL 反向模式匹配(pattern in field)

python - 在 pandas 中生成截至特定日期的列表的最佳解决方案

python - 在 python 中声明时引发异常