这是一个wiki语法过滤器,用“*”号表示html语法中的<ul><li></li></ul>,“*”号越多则层次越深,如: *AAA 
*BBB 
**BBB1 
**BBB2 
***BBB21 
***BBB22 
*CCC 其解析后的html显示结果为: 
AAA 
BBB 
    BBB1 
    BBB2 
        BBB21 
        BBB22 
CCC 该list块的起始到结束是有限制的: 
起始点必须有一个换行符加若干个“*”; 
结束点必须有空行,即两个换行符; 在寻找list块的过程中我遇到了麻烦,我在程序中的test codes: 
//test string 
String test = "列表起点\n\r*AAA\n\r*BBB\n\r***BBB4\n\r\n\r列表结束"; 
//正则表达式,找这个list块 
public static String LI_REGEX = "(\\n\\r\\*)([^\\n\\r\\n\\r]*)(\\n\\r\\n\\r)"; 本来期望的match result是:\n\r*AAA\n\r*BBB\n\r***BBB4\n\r\n\r 
但实际匹配的却是:***BBB4\n\r\n\r 我错在哪里?

解决方案 »

  1.   

    "(\\n\\r\\*)([.\\n\\r]*)(\\n\\r\\n\\r)"
      

  2.   

    Wikipedia or just wiki the tech?曾经写过一个给页面中日期(世纪,年代,年,年月,月,月日,年月日)加[[]]的robot,有兴趣可以一起探讨下。你的代码还没仔细看,可能出在Pattern.compile的时候,第二个参数未指定可以跨行
      

  3.   

    试了一下,不好意思刚才写的不行,不知道为什么[.\\n\\r]不能代表全部字符,.文档上写的是除了换行符所有的字符啊,一直不知道为什么可以试一下
    "(\\n\\r\\*)([^>]*)(\\n\\r\\n\\r)"刚才试了,好使
      

  4.   

    to:shine333(enihs)我正在写的就是wikipedia格式转换程序,用于移植wikipedia数据,robot我了解过,看来我们的共同语言还是蛮多的,多交流!
      

  5.   

    to:dreamover(梦醒了〖http://hellfire.cn〗) 我也是逐个检查语法,找不出问题啊,这几天写了十几个有关正则的程序,就这个给卡这儿了
      

  6.   

    to:dreamover(梦醒了〖http://hellfire.cn〗) "(\\n\\r\\*)([^>]*)(\\n\\r\\n\\r)"
    这个正则虽然测试通过,但并不符合程序目标,因为([^>]*)并不能匹配所有非(\\n\\r\\n\\r)的字符串阿,如果中间有一个>符号,就会匹配错误!thanks anyway!
      

  7.   

    经过测试"((\\n\\r)*\\**\\w+)+(\\n\\r)+"匹配\n\r*AAA\n\r*BBB\n\r***BBB4\n\r\n\r
      

  8.   

    找到.怎么代表全部字符了,如下所示
    "(?s)(\\n\\r\\*)(.*)(\\n\\r\\n\\r)"