UBB 代码正则替换问题(500分)
我的本意是把 [b]*[/b] 替换成 <b>*</b>
String str = "[b]1[/b] 2 [b]3[/b]";
str = str.replaceAll("\\[b\\](.*)\\[\\/b\\]", "<b>$1</b>");
out.println(str);
期望结果是 <b>1</b> 2 <b>3</b>
可实际结果 <b>1[/b] 2 [b]3</b>
本来在 PHP 里这些都已搞定,可如今用 JSP 却不知道如何写,关键点禁止贪婪匹配,可我看了 java.util.regex.Pattern 的 flags 好像没有这个选项
——————————————————————
第一个帮我解决问题者额外开帖送分 500,此帖送分,回帖就有分
这个问题几个月前问过,无奈没人回答
问题点数:100、回复次数:22Top
1 楼jFresH_MaN(十一月的萧邦-夜曲)回复于 2005-01-27 15:15:22 得分 20
String str = "[b]1[/b] 2 [b]3[/b]";
str = str.replaceAll("\\[b\\][^\\[]*\\[\\/b\\]", "<b>$1</b>");
Top
2 楼jFresH_MaN(十一月的萧邦-夜曲)回复于 2005-01-27 15:17:34 得分 0
String str = "[b]1[/b] 2 [b]3[/b]";
str = str.replaceAll("\\[","<");
str = str.replaceAll("\\]",">");
这样是不是更简单呢?Top
3 楼platinum(代号 铂)回复于 2005-01-27 15:19:25 得分 0
jFresH_MaN……我要是想替换 [url=xxx]xxx[/url] 这样稍微复杂点的呢?Top
4 楼jFresH_MaN(十一月的萧邦-夜曲)回复于 2005-01-27 15:21:07 得分 0
用我第2个写的那个
UBB和HTML标记的区别就是[]和<>的区别啊Top
5 楼platinum(代号 铂)回复于 2005-01-27 15:26:39 得分 0
你还理解不了什么叫 UBB 代码,帮我顶帖我很感谢,分我会给你,这帖楼上还是不要参与的好Top
6 楼singedcat(以夢為馬)回复于 2005-01-27 15:29:31 得分 20
[是特别字符,需要用\转换.Top
7 楼singedcat(以夢為馬)回复于 2005-01-27 15:30:26 得分 0
String str = "[b]1[/b] 2 [b]3[/b]";
str = str.replaceAll("\\[","<");
str = str.replaceAll("\\]",">");Top
8 楼sylmoon(专注Oracle)回复于 2005-01-27 15:33:04 得分 20
studyTop
9 楼jFresH_MaN(十一月的萧邦-夜曲)回复于 2005-01-27 15:34:11 得分 0
晕,我就不信了
String str = "[b]1[/b] 2 [b]3[/b]";
str = str.replaceAll("\\[([^\\]*)\\](.*)\\[\\/([^\\]*)\\]", "<$1>$2</$3>");
out.println(str);
Top
10 楼platinum(代号 铂)回复于 2005-01-27 15:37:48 得分 0
我靠,玩 java 的智商就是让人佩服,居然没一个明白意思的
假设
String str = "[1.] 这个[b]重要[/b]的内容在[url=http://www.163.com]网易[/url]";
我只想转换 [b][/b] 成 <b></b>, [1.] 不转换、[url= 我要转换成 <a href="
你还替换所有的 [ 和 ] ?Top
11 楼platinum(代号 铂)回复于 2005-01-27 15:39:09 得分 0
总之我问的就是怎么避免贪婪匹配,你们干嘛都要找表面上的替代方法呢?Top
12 楼jFresH_MaN(十一月的萧邦-夜曲)回复于 2005-01-27 15:42:57 得分 0
我们是菜鸟,但是不要说所有的玩java的人啊!
我想我们是能解决的
你的意思我知道了
String str = "[b]1[/b] 2 [b]3[/b]";
str = str.replaceAll("\\[b\\]([^\\[]*)\\[\\/b\\]", "<b>$1</b>");
这个还不行?Top
13 楼platinum(代号 铂)回复于 2005-01-27 15:48:44 得分 0
确实不行,因为我确实还有嵌套的例子……像 [url=[archive=109]]《发烧症候群》[/url] 这样的,尽管常规 UBB 里是没有这个的……Top
14 楼pigo()回复于 2005-01-27 16:39:04 得分 20
解决贪婪匹配,要加个问号,如下:
String str="[b]1[/b] 2 [b]3[/b]";
str = str.replaceAll("\\[b\\](.*?)\\[/b\\]", "<b>$1</b>");
System.out.println(str);
//玩 java 的智商就是让人佩服
不过楼主这句话在这里说不太合适吧?????????
Top
15 楼jFresH_MaN(十一月的萧邦-夜曲)回复于 2005-01-27 16:47:31 得分 0
楼上的给他把问题解决了吧。我是不行了啊
给java版长脸Top
16 楼Sunmast(速马@Redmond, WA)回复于 2005-01-27 16:57:51 得分 20
哈哈Top
17 楼platinum(代号 铂)回复于 2005-01-27 17:07:06 得分 0
多谢楼上,解决了困扰了我 n 个月的问题。
上次问同样的问题我问“how to”结果一个 n 个星星的哥们的回复是一个 boolean 值的“对”,快给我气疯了,这次差点又重蹈覆辙,没有踢馆的口气恐怕也找不到个能人来解惑了。
真的很感谢
http://community.csdn.net/Expert/topic/3758/3758654.xml
http://community.csdn.net/Expert/topic/3758/3758655.xml
http://community.csdn.net/Expert/topic/3758/3758656.xml
http://community.csdn.net/Expert/topic/3758/3758662.xml
http://community.csdn.net/Expert/topic/3758/3758661.xmlTop
18 楼platinum(代号 铂)回复于 2005-01-27 17:08:15 得分 0
靠,你小子夹进来做甚,我说的是楼上的楼上的楼上……Top
19 楼platinum(代号 铂)回复于 2005-01-27 17:10:07 得分 0
faint,没看清,夹进来了两个,我说的是我家种马……Top
20 楼Sunmast(速马@Redmond, WA)回复于 2005-01-27 17:10:38 得分 0
哇哈哈Top
21 楼Sunmast(速马@Redmond, WA)回复于 2005-01-27 17:10:58 得分 0
怎么着也帮你找了半天东西撒Top
22 楼zyg158((DD)OTP)回复于 2005-01-27 18:08:14 得分 0
我也学习一下Top




