我的文字类似
ab1ab2ab3ab4cd
可以创建一个java正则表达式来获取所有以"ab"
开头并以"cd"
结尾的子字符串吗? e.g:
ab1ab2ab3ab4cd
ab2ab3ab4cd
ab3ab4cd
ab4cd
由于
答案 0 :(得分:4)
正则表达式(?=(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
,则正则表达式将无法生成所需的结果。在这种情况下,您将不得不求助于一些手动字符串算法。
答案 1 :(得分:1)
您似乎想要ab\w+?cd
或\bab\w+?cd\b
答案 2 :(得分:0)