想针对若干个相似文件抽取两段字符串之间的字符串,其中包含换行。比如说以abc开头的,cba结束的一段字符串,如下所示:
[code]1123 abc sads
dase
cba qewqeqw[/code]我希望是通过正则表达式获取到如下部分字符串:
[code]abc sads
dase
cba[/code]我晓得如果不用正则,其实用indexof,substring结合很容易就搞定,不过就是需要写比较多的代码,或者效率可能低些?
现在我想知道正则表达式是否可以轻松搞定?顺便想深入学习下正则。
先谢谢各位了。
[code]1123 abc sads
dase
cba qewqeqw[/code]我希望是通过正则表达式获取到如下部分字符串:
[code]abc sads
dase
cba[/code]我晓得如果不用正则,其实用indexof,substring结合很容易就搞定,不过就是需要写比较多的代码,或者效率可能低些?
现在我想知道正则表达式是否可以轻松搞定?顺便想深入学习下正则。
先谢谢各位了。
[code=BatchFile]
12121abc adasdas
adsaw
dsfd
dfgdfweew
cba 1312
dasdas
[/code]我希望是通过正则表达式获取到如下部分字符串:
[code=BatchFile]
abc adasdas
adsaw
dsfd
dfgdfweew
cba
[/code]
Matcher m = p.matcher("aaaaab");
boolean b = m.matches();
详细看一下API,再自己测试一下
要截取给定的两个字符串之间的东西,是吗?要是这样的话,4楼的作废。假如以ABC开头,xyz结尾
表达式为:
ABC[.]*xyz
import java.util.regex.Pattern;public class Test1 {
public static void main(String[] args) {
String str = "12121abc adasdas\n" +
"adsaw\n" +
"dsfd\n" +
"dfgdfweew\n" +
"cba 1312\n" +
"dasdas";
String regex = "abc.*?cba";
Pattern pattern = Pattern.compile(regex, Pattern.DOTALL);
Matcher matcher = pattern.matcher(str);
while(matcher.find()) {
System.out.println(matcher.group());
}
}
}
哇哈哈,我就猜到了大叔要用DOTALL
没想到还有DOTALL这么精彩的东东。
google,迅雷什么的都可以