duracell讲得很不错,不过我认为可能还有两个原因。第一个是MULTILINE,你在compile Pattern的时候加一个Pattern.MULTILINE的开关。它会把字符串里的'\n'当成一个字符来解释。第二个可能的原因是中文。你最好把这段文字解码成unicode的,然后再做匹配。我感觉你这两个标记的regex写得太复杂了。是不是还有其他的可能性,比如标记会分成两行什么的。如果是这样,那真是太痛苦了。我这里也有一段程序,你试试。public List<String> takeText(String input, String beginTag, String endTag) {
String[] strArray = Pattern.compile(beginTag,P attern.MULTILINE).split(input);
List<String> result = new ArrayList<String>();
for (String s : strArray)
result.add(Pattern.compile(endTag, Pattern.MULTILINE).split(s)[0]);
return result;
}
String[] strArray = Pattern.compile(beginTag,P attern.MULTILINE).split(input);
List<String> result = new ArrayList<String>();
for (String s : strArray)
result.add(Pattern.compile(endTag, Pattern.MULTILINE).split(s)[0]);
return result;
}
解决方案 »
- 关于java缩放
- 我有java数据结构与算法的问题~高手请帮忙看看~~第一次发帖,到处询问~不好意思。
- 【散分】新年新气象! 祝大家新的一年和自己爱的人!高兴每一天!
- 问一下BufferedReader中mark方法里面的参数有什么作用
- 这段小程序如何体现了多线程的概念?(大虾请赐教)
- 高分跪求!!!!!!!!
- 哪里有java的帮助文档? 马上给分!
- 请问用JBUILDER7怎么把一个.class文件转变为.exe 文件,请具体说明一下,谢谢了!
- 敢问错在何方?初学java
- 刚开始学JAVA ,遭受致命打击,照抄书上原代码都会出错?谁能告诉我怎么回事?
- 急!!socket问题,在线等待
- 我想让自己的JFrame中所有的对话框都支持鼠标中键滚动,想调用JBWheel.jar包的方法,如何做到!
只要
str = '......................'
pattern ="(<!--\\s*BEGIN\\s*"+strk+"\\s*-->|<!--\\s*END\\s*"+strk+"\\s*-->)"
return str.split(pattern)[1];
就可以了btw: to shhgs()
看来你根本就没搞清楚什么是multiline
multiline的主要作用是对^和$
打开multiline时,^/$只针对string中的一行的头尾
关闭multiline时,^/$针对的是string的头尾无论有几行把\n作为字符处理的是dotall另外\s代表了\t\n\x0B\f\r并不是只有空格
所以pattern换行是没有关系的
有没有更好的法子?:(把我说的方法写一个函数
本来就可以反复调用
根本不存在什么麻烦
要是我自己,两天已经看完两本书了,早就解决了
网上regex的电子书多了去了
master regular expression in perl就是经典中的经典(不需要会perl)你觉得php好就去用php好了
反正java调php也是小菜一碟
java差也没有人求你用java
搞了半天连dotall也不懂
你根本就是连j2se 里面的 java.util.regex 的 document都没看过
你也配到这里来叫嚣 “也太差了吧:(”
news-->
或者 <!-- bEgIn
NeWS -->的话,根本没必要写得这么复杂。不过我倒是真的看到过这种变态的网页,真不知道该怎样写regex。
你光知道说?最早上面的方法我想就想到了,就是想知道一种比教快速最重要的是不费CPU的算法~~你以为你是高手? HOHO~~~~~~~,我没看过?上面的表达式是怎么来的?你以为就你是高手所?? *眼看人低。不想跟你废话!!~~~。
news-->
或者 <!-- bEgIn
NeWS -->
只需要大小写不敏感就可以了。Pattern.CASE_INSENSITIVE
回复人: duracell() ( ) 信誉:100
你光知道说?最早上面的方法我想就想到了,就是想知道一种比教快速最重要的是不费CPU的算法~~你以为你是高手? HOHO~~~~~~~,我没看过?上面的表达式是怎么来的?你以为就你是高手所?? *眼看人低。不想跟你废话!!~~~。
你连为什么regex会stack溢出都不知道,dotall都不知道,你也算懂正则表达式?
要高效,你可以自己写匹配的classbtw:我从来没认为自己是高手,不过比你这不学无术的高有限的一点而已,一个简单的问题问了三天你自己还解决不了,你也配称程序员?
要高效,你可以自己写匹配的classbtw:我从来没认为自己是高手,不过比你这不学无术的高有限的一点而已,一个简单的问题问了三天你自己还解决不了,你也配称程序员?滚你妈的~~~~~~,谁说我解决不了,不用你的回答,我也不用问直接用substring就能分出来,只是我想找到我认为比较好的方法,你这种人就是自以为懂了,别人都没你行,你知道的就是最好的。还有你以为你就是程序员,你技术比我行有个B用啊? 学技术来干什么?是用来找钱的,我跟你比个鸟~,你就没有问过别人问题,你在这里回了贴子,我现在说,不稀罕你边凉快去,我不须要你的回答。我最JB讨厌你这种自以为了不起自命不凡的人.这里比你历害的高手有的是,有哪个像你那样的? 你说我问了三天了,你不想回答就算了,不要废话。没有人拉着叫你回答~。
。
Pattern.DOTALL | Pattern.MULTILINE |
Pattern.CASE_INSENSITIVE);我也刚看正则表达式才几天,顺便也问个问题,怎么替换 "abbc"为"kbbm",即保留"bb"不变。"abbc".replaceAll("^[a]\\w+c","这里怎么写???")
如果有肯帮忙的朋友,在此先表示谢谢。
使用RegExp肯定会有StackOverflowError的隐患,所以最简单的方法是找到startIndex和endIndex,然后substring。没什么最好的方法,解决了问题就OK了。
前面用括号括起来,后面就可以利用 $n来引用。具体可参照相关文档。
滚你妈的~~~~~~,谁说我解决不了,不用你的回答,我也不用问直接用substring就能分出来,只是我想找到我认为比较好的方法,你这种人就是自以为懂了,别人都没你行,你知道的就是最好的。还有你以为你就是程序员,你技术比我行有个B用啊? 学技术来干什么?是用来找钱的,我跟你比个鸟~,你就没有问过别人问题,你在这里回了贴子,我现在说,不稀罕你边凉快去,我不须要你的回答。我最JB讨厌你这种自以为了不起自命不凡的人.这里比你历害的高手有的是,有哪个像你那样的? 你说我问了三天了,你不想回答就算了,不要废话。没有人拉着叫你回答~。看看,原形毕露了!^_^建议你老兄以后改个nickname 叫碰粪如花
Computer Science 是一门科学 就给你这种人渣给糟蹋了
给你看一篇牛人写的牛文吧:http://www.chinajavaworld.net/forum/topic.cgi?forum=21&topic=14533
基本上就是翻译java api doc里面的java.util.regex的内容的
属于基本常识
推荐去看 Mastering Regular Expressions, Second Edition by Jeffrey E. F. Friedl
这才是经典著作另外问一句
java.regex里面有没类似于python的(?P<name>.*) 然后可以用group("name")来找特定group的法子啊?俺试了好像不行,这在有无数个括号的表达式中很有用的,
谢谢 jkit(不再灌水)!!!刚才刚在一个javascript的正则表达式里发现这种写法,:)已经测试成功.
看看,原形毕露了!^_^
建议你老兄以后改个nickname 叫碰粪如花
Computer Science 是一门科学 就给你这种人渣给糟蹋了
事端由你挑起的,你说我是人渣?如果我是,那你更不如,什么"看看,原形毕露了"??,对付你这号人就是要这样,你人话都不会说,还有资格评价别人???群众的眼睛是雪亮的,我就看不惯你这种人中之拉级,比别多会点就了不起,就随便平击别人,还说别人是人渣。是啊,我是人渣中的人渣。哈哈~~~~~~~~~~~~~~~~~~~~~~~那你更不如!~!!!.
看看,原形毕露了!^_^
建议你老兄以后改个nickname 叫碰粪如花
Computer Science 是一门科学 就给你这种人渣给糟蹋了
事端由你挑起的,你说我是人渣?如果我是,那你更不如,什么"原形毕露了"??,对付你这号人就是要这样,也不知道是谁现在"原形毕露了",你人话都不会说,还有资格评价别人???群众的眼睛是雪亮的,我就看不惯你这种人中之拉级,比别多会点就了不起,就随便平击别人,还说别人是人渣。是啊,我是人渣中的人渣。哈哈~~~~~~~~~~~~~~~~~~~~~~~那你更不如!~!!!.