[英]Java regular expression to find occurence of a particular substring n times
我有一个带字母的字符串,后跟数字(1-4)。 例如
String input = "A1 B1 P3 D1 D2 D3 D4 F3 F3 Z1 Z2 Z3 Z4 P2";
我想以连续的方式找到包含所有4个数字(1到4)的字母的字符串。 在上面的示例中,它是D1 D2 D3 D4
或Z1 Z2 Z3 Z4
。
有什么可能的方法可以在Java中使用RE来匹配它?
是的,您可以使用反向引用来实现。
这是一个完全可执行的程序:
import java.util.regex.*;
public class Four {
static String input = "A1 B1 P3 D1 D2 D3 D4 F3 F3 Z1 Z2 Z3 Z4 P2";
static Pattern four = Pattern.compile("([A-Z])1 \\12 \\13 \\14");
public static void main(String[] args) {
Matcher m = four.matcher(input);
while (m.find()) {
System.out.println(m.group(1));
}
}
}
输出
D
Z
您正在寻找的正则表达式是
([A-Z])1 \\12 \\13 \\14"
它匹配
\\1
匹配在第一组括号中匹配的字符串的内容。 因此,如果您以前有D1
,则\\1
匹配D
如果您的用例允许,您可能希望用\\\\s+
替换单个空格,表示一个或多个空格字符。
编辑
group(1)
提取括号内匹配的值。 如果将其更改为group(0)
,则将拾取整个匹配的字符串,然后程序将输出
D1 D2 D3 D4
Z1 Z2 Z3 Z4
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.