我想搜索以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}[ -]
,但是,在这种情况下,只要能完成工作,就很难列出所有更长的字符集。
答案 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) + "'");
}