正则表达式(Python)中多个字符的常量累积重复总数

时间:2018-12-02 15:50:33

标签: 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}[ -],但是,在这种情况下,只要能完成工作,就很难列出所有更长的字符集。

>

1 个答案:

答案 0 :(得分:1)

您可以使用

Paragraph newExternalParagraph = new Paragraph();
newExternalParagraph.Inlines.Add( new Bold(new Run("[" + hour.ToString() + ":" + minute.ToString() + "]"))
{
    Foreground = Brushes.Yellow
});
_consoleText.Document.Blocks.InsertBefore(_consoleText.Document.Blocks.FirstBlock , newExternalParagraph);

详细信息

  • String regex = "\\b\\d{1,3}[ -]{1,3}(?<=\\b\\d[\\d -]{3})"; -单词边界(如果数字可以粘贴到字母或\b上,则可以用(?<!\d)代替)
  • _-1到3位数字
  • \d{1,3}-1到3个空格或连字符
  • [ -]{1,3}-要向后看,需要在当前位置的左侧紧跟一个正数,必须有一个数字,然后是3个数字,空格或连字符。

请参阅此Java demo

(?<=\\b\\d[\\d -]{3})

输出:

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) + "'"); 
}