求助正则表达式的使用

XuanrenLu 2016-08-18 01:31:54
src = "A Project-Object <p>Model</p>";
Q1: 将Project 替换为 <p color>Project</p>
Q2: 在Q1的基础上,将源src中的p换为 <p> (期待的结果:"A <p color>Project</p>-Object <<p>>Model</<p>>";)
Q3: "<p>Model</p>".replaceAll("<*>",<>);的结果为什么是“<p<>Model</p<>”?
求赐教,给个思路也行。
...全文
334 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
乔不思 2016-08-23
  • 打赏
  • 举报
回复
引用 13 楼 lxr0724 的回复:
我刚才没有把问题描述清楚,补充一下: 第一步执行之后的结果是 res1 = this is <p color>a</p> color model 第二步执行以res1作为源字符串,期待结果 : this is <p color>a</p> <p color>color</p> model 而不是:this is <p <p color>color</p>>a</p> <p color>color</p> model 意思是,我之后的每次替换,都不能改变代码生成的<p color></p> 标签
2. String src = "this is a color model"; src = src.replaceAll(" a ", " <p color>a</p> "); //前后有空格 System.out.println(src); src = src.replaceAll(" color ", " <p color>color</p> "); //前后有空格 System.out.println(src); 刚给我的两个方式,第二种就可以[/quote] 再请教一个问题: src = a color <p color>color</p> 如何捕捉到不在<>里面的color?[/quote] 要学会找规律,没有规律自己制造规律,想我写的第二种方法,不在<>中的color前后是有空格的,
乔不思 2016-08-19
  • 打赏
  • 举报
回复
引用 11 楼 lxr0724 的回复:
[quote=引用 10 楼 zhouren1314 的回复:] [quote=引用 8 楼 lxr0724 的回复:] [quote=引用 6 楼 zhouren1314 的回复:] [quote=引用 5 楼 lxr0724 的回复:] [quote=引用 4 楼 zhouren1314 的回复:] [quote=引用 3 楼 lxr0724 的回复:] [quote=引用 1 楼 zhouren1314 的回复:] 第一二步倒过来写 String s = "A Project-Object <p>Model</p>"; s = s.replaceAll("p", "<p>"); System.out.println(s); s = s.replaceAll("Project", "<p color>Project</p>"); System.out.println(s); 第三步 你想要什么结果,
第三个问题,我的本意把所有的标签换成<>,然后我运行 "<p>Model</p>".replaceAll("<*>",<>);,我现在想知道,为什么会出现这个结果。[/quote] String ss = "<p>Model</p>"; ss= ss.replaceAll("<.*>","<>"); System.out.println(ss);[/quote] 期待的结果是:<>Model<>,该如何做?[/quote] 这个和第一二步有关系吗?如果有能不能串起来说的你的问题, 你这挤牙膏的方式,让人受不了[/quote] sorry,我没有描述好。 更正一下:src = this is a color model 第一步:将a换成 <p color>a</p> 第二步:将src中的color换成<p color>color</p>,但是不能将第一步生成的<p color>中的color 换成 <p <p color>color</p>>[/quote] 1、最简单的方式,吧第一步和第二部颠倒执行, 2. String src = "this is a color model"; src = src.replaceAll(" a ", " <p color>a</p> "); //前后有空格 System.out.println(src); src = src.replaceAll(" color ", " <p color>color</p> "); //前后有空格 System.out.println(src); [/quote] 我刚才没有把问题描述清楚,补充一下: 第一步执行之后的结果是 res1 = this is <p color>a</p> color model 第二步执行以res1作为源字符串,期待结果 : this is <p color>a</p> <p color>color</p> model 而不是:this is <p <p color>color</p>>a</p> <p color>color</p> model 意思是,我之后的每次替换,都不能改变代码生成的<p color></p> 标签[/quote] 2. String src = "this is a color model"; src = src.replaceAll(" a ", " <p color>a</p> "); //前后有空格 System.out.println(src); src = src.replaceAll(" color ", " <p color>color</p> "); //前后有空格 System.out.println(src); 刚给我的两个方式,第二种就可以
XuanrenLu 2016-08-19
  • 打赏
  • 举报
回复
引用 10 楼 zhouren1314 的回复:
[quote=引用 8 楼 lxr0724 的回复:] [quote=引用 6 楼 zhouren1314 的回复:] [quote=引用 5 楼 lxr0724 的回复:] [quote=引用 4 楼 zhouren1314 的回复:] [quote=引用 3 楼 lxr0724 的回复:] [quote=引用 1 楼 zhouren1314 的回复:] 第一二步倒过来写 String s = "A Project-Object <p>Model</p>"; s = s.replaceAll("p", "<p>"); System.out.println(s); s = s.replaceAll("Project", "<p color>Project</p>"); System.out.println(s); 第三步 你想要什么结果,
第三个问题,我的本意把所有的标签换成<>,然后我运行 "<p>Model</p>".replaceAll("<*>",<>);,我现在想知道,为什么会出现这个结果。[/quote] String ss = "<p>Model</p>"; ss= ss.replaceAll("<.*>","<>"); System.out.println(ss);[/quote] 期待的结果是:<>Model<>,该如何做?[/quote] 这个和第一二步有关系吗?如果有能不能串起来说的你的问题, 你这挤牙膏的方式,让人受不了[/quote] sorry,我没有描述好。 更正一下:src = this is a color model 第一步:将a换成 <p color>a</p> 第二步:将src中的color换成<p color>color</p>,但是不能将第一步生成的<p color>中的color 换成 <p <p color>color</p>>[/quote] 1、最简单的方式,吧第一步和第二部颠倒执行, 2. String src = "this is a color model"; src = src.replaceAll(" a ", " <p color>a</p> "); //前后有空格 System.out.println(src); src = src.replaceAll(" color ", " <p color>color</p> "); //前后有空格 System.out.println(src); [/quote] 我刚才没有把问题描述清楚,补充一下: 第一步执行之后的结果是 res1 = this is <p color>a</p> color model 第二步执行以res1作为源字符串,期待结果 : this is <p color>a</p> <p color>color</p> model 而不是:this is <p <p color>color</p>>a</p> <p color>color</p> model 意思是,我之后的每次替换,都不能改变代码生成的<p color></p> 标签
乔不思 2016-08-19
  • 打赏
  • 举报
回复
引用 8 楼 lxr0724 的回复:
[quote=引用 6 楼 zhouren1314 的回复:] [quote=引用 5 楼 lxr0724 的回复:] [quote=引用 4 楼 zhouren1314 的回复:] [quote=引用 3 楼 lxr0724 的回复:] [quote=引用 1 楼 zhouren1314 的回复:] 第一二步倒过来写 String s = "A Project-Object <p>Model</p>"; s = s.replaceAll("p", "<p>"); System.out.println(s); s = s.replaceAll("Project", "<p color>Project</p>"); System.out.println(s); 第三步 你想要什么结果,
第三个问题,我的本意把所有的标签换成<>,然后我运行 "<p>Model</p>".replaceAll("<*>",<>);,我现在想知道,为什么会出现这个结果。[/quote] String ss = "<p>Model</p>"; ss= ss.replaceAll("<.*>","<>"); System.out.println(ss);[/quote] 期待的结果是:<>Model<>,该如何做?[/quote] 这个和第一二步有关系吗?如果有能不能串起来说的你的问题, 你这挤牙膏的方式,让人受不了[/quote] sorry,我没有描述好。 更正一下:src = this is a color model 第一步:将a换成 <p color>a</p> 第二步:将src中的color换成<p color>color</p>,但是不能将第一步生成的<p color>中的color 换成 <p <p color>color</p>>[/quote] 1、最简单的方式,吧第一步和第二部颠倒执行, 2. String src = "this is a color model"; src = src.replaceAll(" a ", " <p color>a</p> "); //前后有空格 System.out.println(src); src = src.replaceAll(" color ", " <p color>color</p> "); //前后有空格 System.out.println(src);
XuanrenLu 2016-08-19
  • 打赏
  • 举报
回复
引用 7 楼 zhouren1314 的回复:
String ss = "<p>Model</p>"; ss= ss.replaceAll("(<)\\w+(>\\w+<)\\/?\\w+(>)","$1$2$3"); System.out.println(ss);
捕获组很好用,我get到了,谢谢指点。 关于如下问题 src = this is a color model 第一步:将a换成 <p color>a</p> 第二步:将src中的color换成<p color>color</p>,但是不能将第一步生成的<p color>中的color 换成 <p <p color>color</p>> 怎么描述color不在<p color>标签中 的逻辑关系?
XuanrenLu 2016-08-19
  • 打赏
  • 举报
回复
引用 6 楼 zhouren1314 的回复:
[quote=引用 5 楼 lxr0724 的回复:] [quote=引用 4 楼 zhouren1314 的回复:] [quote=引用 3 楼 lxr0724 的回复:] [quote=引用 1 楼 zhouren1314 的回复:] 第一二步倒过来写 String s = "A Project-Object <p>Model</p>"; s = s.replaceAll("p", "<p>"); System.out.println(s); s = s.replaceAll("Project", "<p color>Project</p>"); System.out.println(s); 第三步 你想要什么结果,
第三个问题,我的本意把所有的标签换成<>,然后我运行 "<p>Model</p>".replaceAll("<*>",<>);,我现在想知道,为什么会出现这个结果。[/quote] String ss = "<p>Model</p>"; ss= ss.replaceAll("<.*>","<>"); System.out.println(ss);[/quote] 期待的结果是:<>Model<>,该如何做?[/quote] 这个和第一二步有关系吗?如果有能不能串起来说的你的问题, 你这挤牙膏的方式,让人受不了[/quote] sorry,我没有描述好。 更正一下:src = this is a color model 第一步:将a换成 <p color>a</p> 第二步:将src中的color换成<p color>color</p>,但是不能将第一步生成的<p color>中的color 换成 <p <p color>color</p>>
XuanrenLu 2016-08-19
  • 打赏
  • 举报
回复
我刚才没有把问题描述清楚,补充一下: 第一步执行之后的结果是 res1 = this is <p color>a</p> color model 第二步执行以res1作为源字符串,期待结果 : this is <p color>a</p> <p color>color</p> model 而不是:this is <p <p color>color</p>>a</p> <p color>color</p> model 意思是,我之后的每次替换,都不能改变代码生成的<p color></p> 标签[/quote] 2. String src = "this is a color model"; src = src.replaceAll(" a ", " <p color>a</p> "); //前后有空格 System.out.println(src); src = src.replaceAll(" color ", " <p color>color</p> "); //前后有空格 System.out.println(src); 刚给我的两个方式,第二种就可以[/quote] 再请教一个问题: src = a color <p color>color</p> 如何捕捉到不在<>里面的color?
乔不思 2016-08-18
  • 打赏
  • 举报
回复
String ss = "<p>Model</p>"; ss= ss.replaceAll("(<)\\w+(>\\w+<)\\/?\\w+(>)","$1$2$3"); System.out.println(ss);
乔不思 2016-08-18
  • 打赏
  • 举报
回复
引用 5 楼 lxr0724 的回复:
[quote=引用 4 楼 zhouren1314 的回复:] [quote=引用 3 楼 lxr0724 的回复:] [quote=引用 1 楼 zhouren1314 的回复:] 第一二步倒过来写 String s = "A Project-Object <p>Model</p>"; s = s.replaceAll("p", "<p>"); System.out.println(s); s = s.replaceAll("Project", "<p color>Project</p>"); System.out.println(s); 第三步 你想要什么结果,
第三个问题,我的本意把所有的标签换成<>,然后我运行 "<p>Model</p>".replaceAll("<*>",<>);,我现在想知道,为什么会出现这个结果。[/quote] String ss = "<p>Model</p>"; ss= ss.replaceAll("<.*>","<>"); System.out.println(ss);[/quote] 期待的结果是:<>Model<>,该如何做?[/quote] 这个和第一二步有关系吗?如果有能不能串起来说的你的问题, 你这挤牙膏的方式,让人受不了
XuanrenLu 2016-08-18
  • 打赏
  • 举报
回复
引用 4 楼 zhouren1314 的回复:
[quote=引用 3 楼 lxr0724 的回复:] [quote=引用 1 楼 zhouren1314 的回复:] 第一二步倒过来写 String s = "A Project-Object <p>Model</p>"; s = s.replaceAll("p", "<p>"); System.out.println(s); s = s.replaceAll("Project", "<p color>Project</p>"); System.out.println(s); 第三步 你想要什么结果,
第三个问题,我的本意把所有的标签换成<>,然后我运行 "<p>Model</p>".replaceAll("<*>",<>);,我现在想知道,为什么会出现这个结果。[/quote] String ss = "<p>Model</p>"; ss= ss.replaceAll("<.*>","<>"); System.out.println(ss);[/quote] 期待的结果是:<>Model<>,该如何做?
乔不思 2016-08-18
  • 打赏
  • 举报
回复
引用 3 楼 lxr0724 的回复:
[quote=引用 1 楼 zhouren1314 的回复:] 第一二步倒过来写 String s = "A Project-Object <p>Model</p>"; s = s.replaceAll("p", "<p>"); System.out.println(s); s = s.replaceAll("Project", "<p color>Project</p>"); System.out.println(s); 第三步 你想要什么结果,
第三个问题,我的本意把所有的标签换成<>,然后我运行 "<p>Model</p>".replaceAll("<*>",<>);,我现在想知道,为什么会出现这个结果。[/quote] String ss = "<p>Model</p>"; ss= ss.replaceAll("<.*>","<>"); System.out.println(ss);
XuanrenLu 2016-08-18
  • 打赏
  • 举报
回复
引用 1 楼 zhouren1314 的回复:
第一二步倒过来写 String s = "A Project-Object <p>Model</p>"; s = s.replaceAll("p", "<p>"); System.out.println(s); s = s.replaceAll("Project", "<p color>Project</p>"); System.out.println(s); 第三步 你想要什么结果,
第三个问题,我的本意把所有的标签换成<>,然后我运行 "<p>Model</p>".replaceAll("<*>",<>);,我现在想知道,为什么会出现这个结果。
  • 打赏
  • 举报
回复
第三个是想得到<>Model<>吗 "<p>Model</p>".replaceAll("<\\S*?>", "<>")
乔不思 2016-08-18
  • 打赏
  • 举报
回复
第一二步倒过来写 String s = "A Project-Object <p>Model</p>"; s = s.replaceAll("p", "<p>"); System.out.println(s); s = s.replaceAll("Project", "<p color>Project</p>"); System.out.println(s); 第三步 你想要什么结果,

62,625

社区成员

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

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