查找给定分隔符之间给定位数的数字

Ram*_*jan -2 java regex

我可以使用什么regex/pattern来查找字符串中的以下模式?

#nnnn:
Run Code Online (Sandbox Code Playgroud)

nnnn可以是任何 4 位长数字,只要它由主题标签和冒号包围即可。

我已经尝试过下面的代码:

#nnnn:
Run Code Online (Sandbox Code Playgroud)

它确实有效,但它匹配其他字符串,如下所示:

String string = "#8226:";
if(string.matches( ".*\\d:.*" )) {
  System.out.println( "Yes" );
}
Run Code Online (Sandbox Code Playgroud)

我希望它只匹配问题顶部的模式。

谁能告诉我我哪里错了?

qrt*_*tt1 5

可以用正则表达式来完成

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class FindPattern {
    public static void main(String[] args) {
        Pattern pattern = Pattern.compile("#[0-9]{4}:");

        String text = "#1233:#3433:abc#3993: #a343:___#8888:ki";
        Matcher matcher = pattern.matcher(text);
        while (matcher.find()) {
            System.out.println(matcher.group());
        }

    }
}
Run Code Online (Sandbox Code Playgroud)

输出是:

#1233:
#3433:
#3993:
#8888:
Run Code Online (Sandbox Code Playgroud)