我想获得所有子字符串(d{2,3}
)所以我使用
Pattern pattern = Pattern.compile("(?m)(\D)(\d{2,3})(\D)");
对于我的例子
strExample = " 123c12de34 ";
匹配检测2个匹配:123和34。是否有任何模式来检测3个匹配:123, 12和34?
(?:^|(?<=D))(d{2,3})(?=D|$)
用0 width assertions
到lookarounds
代替match
,这将启用所有3
,因为现在没有任何overlap
使用与交替使用,通过这样做,您将能够找到以行开头或数字开头的数字:
RegEx Pattern: /(?<=A|D)(d+)/g
工作演示@ regex101
<标题> Update # 1Java工作示例
public class StackOverflow32336833 {
public static String text;
public static String pattern;
static {
text = "123c12de34";
pattern = "(?<=\A|\D)(\d+)";
}
public static void printMatches(String text, String pattern) {
Pattern p = Pattern.compile(pattern);
Matcher m = p.matcher(text);
while (m.find()) {
System.out.println(m.group());
}
}
public static void main(String[] args) {
printMatches(text, pattern);
}
}
标题>