正则表达式高手来帮忙!

Binary Wang 2008-04-28 05:12:10
想针对若干个相似文件抽取两段字符串之间的字符串,其中包含换行。比如说以abc开头的,cba结束的一段字符串,如下所示:
1123 abc sads
dase
cba qewqeqw


我希望是通过正则表达式获取到如下部分字符串:
abc sads
dase
cba


我晓得如果不用正则,其实用indexof,substring结合很容易就搞定,不过就是需要写比较多的代码,或者效率可能低些?
现在我想知道正则表达式是否可以轻松搞定?顺便想深入学习下正则。
先谢谢各位了。
...全文
85 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
Binary Wang 2008-04-29
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 hanxd106 的回复:]
学习一下, 谁有正则表达式的资料呢
[/Quote]
网上资料很多啊,自己搜索下就什么都有了。
google,迅雷什么的都可以
hanxd106 2008-04-29
  • 打赏
  • 举报
回复
学习一下, 谁有正则表达式的资料呢
gzdiablo 2008-04-29
  • 打赏
  • 举报
回复
abc[\s\S]*?cba
shili150 2008-04-29
  • 打赏
  • 举报
回复
\babc\b.*\bcba\b
Binary Wang 2008-04-29
  • 打赏
  • 举报
回复
本来我是用Pattern.MULTILINE,却一直得不到正确结果,很郁闷。
没想到还有DOTALL这么精彩的东东。
Binary Wang 2008-04-29
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 bao110908 的回复:]
Java codeimport java.util.regex.Matcher;
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"…
[/Quote]

多谢火龙果大哥的代码。
Binary Wang 2008-04-29
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 bao110908 的回复:]
如下所示?我怎么一个都没看到啊?
[/Quote]
本来我写的有内容的,只是code里我没指定具体的代码名,所以没有显示出来,我想修改也不让我修改。
joejoe1991 2008-04-28
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 bao110908 的回复:]
Java codeimport java.util.regex.Matcher;
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"…
[/Quote]

哇哈哈,我就猜到了大叔要用DOTALL
  • 打赏
  • 举报
回复
import java.util.regex.Matcher;
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());
}
}
}
spiderScorpion 2008-04-28
  • 打赏
  • 举报
回复
没看明白要干什么,
要截取给定的两个字符串之间的东西,是吗?

要是这样的话,4楼的作废。

假如以ABC开头,xyz结尾
表达式为:
ABC[.]*xyz
spiderScorpion 2008-04-28
  • 打赏
  • 举报
回复
以空格分隔???
([^ ]*)
a_nuo 2008-04-28
  • 打赏
  • 举报
回复
Pattern p = Pattern.compile("\Babc*cba\B");
Matcher m = p.matcher("aaaaab");
boolean b = m.matches();
详细看一下API,再自己测试一下
  • 打赏
  • 举报
回复
如下所示?我怎么一个都没看到啊?
Binary Wang 2008-04-28
  • 打赏
  • 举报
回复
晕,不让我修改帖子?

比如说以abc开头的,cba结束的一段字符串,如下所示:
[code=BatchFile]
12121abc adasdas
adsaw
dsfd
dfgdfweew
cba 1312
dasdas
[/code]

我希望是通过正则表达式获取到如下部分字符串:
[code=BatchFile]
abc adasdas
adsaw
dsfd
dfgdfweew
cba
[/code]

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧