求教一正则表达式

ninesea 2009-12-10 10:13:17
xx“aa”bb“cc”yy 取出aa cc
xx“aa“bb”cc”yy 取出aa“bb”cc
...全文
131 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
ninesea 2009-12-10
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 jonay 的回复:]
str = "xx“aabb“cc“ee“cc”yy"; 像这里面的引号都不成对出现.
你给出的都是个别例子,并没有说规则,我也无能为力了
[/Quote]
这个规则很明显啊 但是不好表达
xx“aa”bb“cc”yy 取出aa和cc
xx“aa“bb”cc”yy 取出aa“bb”cc
xx“aa“bb”“cc”yy 取出aa“bb和cc 因为把cc取出来后“aa“bb”这里还是可以找出一对引号的
xx“aa“bb““cc”yy 只能取出aa“bb““cc 因为单独把cc拿出来后“aa“bb“这个不成对了

可以肯定的是起始是上引号“ 结束是下引号” 中间可以是任意字符包括引号 所以要根据里面的引号情况去匹配 其实规则就是我上面说的目的 有个字符串要处理 双引号括起来的内容不处理 我真的没法表达出这个规则
jonay 2009-12-10
  • 打赏
  • 举报
回复
str = "xx“aabb“cc“ee“cc”yy"; 像这里面的引号都不成对出现.
你给出的都是个别例子,并没有说规则,我也无能为力了
swandragon 2009-12-10
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 ninesea 的回复:]
引用 6 楼 jonay 的回复:
Java codepublicstaticvoid main(String args[]) {
        String regex="(? <=“)([^“”]*|[^“”]*“.*”[^“”]*)(?=”)";//你给的例子里双引号是全角,如果是半角则用\"替换“和”;        Pattern p= Pattern.compile(regex);
        String str="xx“aa“bb”cc”yy";//str = "xx“aa”bb“cc”yy";        Matcher m= p.matcher(str);while(m.find()) {
            System.out.println(m.group());
        }
    }\
输出:aa“bb”cc
如果str = xx“aa”bb“cc”yy
则输出:
aa
cc



这个还有点缺陷 我有个字符串需要处理 但是不处理引号括起来的
比如
str = "xx“aabb“cc”ee“cc”yy"; 我想取出来的是aabb“cc和cc
str = "xx“aabb“cc“ee“cc”yy"; 我想取出来的是aabb“cc“ee“cc
str = "xx“aabb“cc”ee”cc”yy"; 我想取出来的是aabb“cc”ee”cc
有个难点就是有时需要匹配长的有时需要匹配短的
[/Quote]
这要求太难满足了
ninesea 2009-12-10
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 jonay 的回复:]
Java codepublicstaticvoid main(String args[]) {
String regex="(?<=“)([^“”]*|[^“”]*“.*”[^“”]*)(?=”)";//你给的例子里双引号是全角,如果是半角则用\"替换“和”; Pattern p= Pattern.compile(regex);
String str="xx“aa“bb”cc”yy";//str = "xx“aa”bb“cc”yy"; Matcher m= p.matcher(str);while(m.find()) {
System.out.println(m.group());
}
}\
输出:aa“bb”cc
如果str = xx“aa”bb“cc”yy
则输出:
aa
cc

[/Quote]

这个还有点缺陷 我有个字符串需要处理 但是不处理引号括起来的
比如
str = "xx“aabb“cc”ee“cc”yy"; 我想取出来的是aabb“cc和cc
str = "xx“aabb“cc“ee“cc”yy"; 我想取出来的是aabb“cc“ee“cc
str = "xx“aabb“cc”ee”cc”yy"; 我想取出来的是aabb“cc”ee”cc
有个难点就是有时需要匹配长的有时需要匹配短的
xierangh 2009-12-10
  • 打赏
  • 举报
回复
(?=")[^"]*(\\k<0>)*(?=")
jonay 2009-12-10
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 ninesea 的回复:]
xx“aa “dd””bb“cc”yy 取出aa “dd” cc


[/Quote]
同样适用
不过不是aa “dd” cc
而是:
aa “dd”
cc
ninesea 2009-12-10
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 swandragon 的回复:]
Java code
String str="xx“aa“bb”cc”yy";
System.out.println(str.replaceAll("xx(.*)yy","$1"));
[/Quote]
不对
String str="xx“aa”bb“cc”yy"; 这个我要的是 aa 和cc
jonay 2009-12-10
  • 打赏
  • 举报
回复

public static void main(String args[]) {
String regex = "(?<=“)([^“”]*|[^“”]*“.*”[^“”]*)(?=”)";//你给的例子里双引号是全角,如果是半角则用\"替换“和”;
Pattern p = Pattern.compile(regex);
String str = "xx“aa“bb”cc”yy ";
//str = "xx“aa”bb“cc”yy";
Matcher m = p.matcher(str);
while(m.find()) {
System.out.println(m.group());
}
}
\
输出:aa“bb”cc
如果str = xx“aa”bb“cc”yy
则输出:
aa
cc
ninesea 2009-12-10
  • 打赏
  • 举报
回复
xx“aa “dd””bb“cc”yy 取出aa “dd” cc

xierangh 2009-12-10
  • 打赏
  • 举报
回复
".*" 就这样 嘿嘿。
swandragon 2009-12-10
  • 打赏
  • 举报
回复

String str = "xx“aa“bb”cc”yy ";
System.out.println(str.replaceAll("xx(.*)yy","$1"));
jonay 2009-12-10
  • 打赏
  • 举报
回复
不对不对,再让我想想
jonay 2009-12-10
  • 打赏
  • 举报
回复

public static void main(String args[]) {
String regex = "(?<=“).*(?=”)";//你给的例子里双引号是全角,如果是半角刚regex = "(?<=\").*(?=\")";
Pattern p = Pattern.compile(regex);
String str = "xx“aa“bb”cc”yy ";
Matcher m = p.matcher(str);
while(m.find()) {
System.out.println(m.group());
}
}

aa“bb”cc
shan1119 2009-12-10
  • 打赏
  • 举报
回复
String regex = "((“[^“”]+)+”(([^“”]+”)+)?)";
Pattern p = Pattern.compile(regex);
String str = "xx“aa“bb”cc”yy ";
str = "xx“aa”bb“cc”yy";
//str="xx“aabb“cc”ee“cc”yy"; 我想取出来的是aabb“cc和cc
//str="xx“aabb“cc“ee“cc”yy"; 我想取出来的是aabb“cc“ee“cc
//str="xx“aabb“cc”ee”cc”yy"; 我想取出来的是aabb“cc”ee”cc
Matcher m = p.matcher(str);
while(m.find()) {
System.out.println(m.group());
}
jonay 2009-12-10
  • 打赏
  • 举报
回复
正则不是万能的,我觉得你应该自己写个解析的,而不是用一个正则表达示来完成
苍蝇①号 2009-12-10
  • 打赏
  • 举报
回复
没有通用规律可循
ninesea 2009-12-10
  • 打赏
  • 举报
回复
不但要引号括起来的内容不处理而且这个引号还要去掉
比如
xx“aa”bb“cc”yy要处理xx bb yy这3串 最后是xxaabbccyy
xx“aa“bb”cc”yy 处理完xx yy之后变成xxaa“bb”ccyy

62,612

社区成员

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

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