我有一段类似的文字
ab1ab2ab3ab4cd
是否可以创建一个 java 正则表达式来获取所有以 "ab"
开头并以 "cd"
结尾的子字符串?例如:
ab1ab2ab3ab4cd
ab2ab3ab4cd
ab3ab4cd
ab4cd
谢谢
最佳答案
如您所见,正则表达式 (?=(ab.*cd))
会将此类匹配项分组到第 1 组:
import java.util.regex.*;
public class Main {
public static void main(String[] args) throws Exception {
Matcher m = Pattern.compile("(?=(ab.*cd))").matcher("ab1ab2ab3ab4cd");
while (m.find()) {
System.out.println(m.group(1));
}
}
}
产生:
ab1ab2ab3ab4cd
ab2ab3ab4cd
ab3ab4cd
ab4cd
你需要向前看,(?= ... )
,否则你只会得到一个匹配项。请注意,如果字符串中的 cd
超过 2 个,则正则表达式将无法产生所需的结果。在这种情况下,您将不得不求助于一些手动字符串算法。
关于Java正则表达式问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6030627/