我有类似的文字
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
您需要先看看
(?= ... )
,否则您将只获得一场比赛。请注意,如果您的字符串中包含2个以上cd
,则regex将无法产生所需的结果。在这种情况下,您将不得不求助于一些手动字符串算法。