这是一个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 我错在哪里?
*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 我错在哪里?
"(\\n\\r\\*)([^>]*)(\\n\\r\\n\\r)"刚才试了,好使
这个正则虽然测试通过,但并不符合程序目标,因为([^>]*)并不能匹配所有非(\\n\\r\\n\\r)的字符串阿,如果中间有一个>符号,就会匹配错误!thanks anyway!
"(?s)(\\n\\r\\*)(.*)(\\n\\r\\n\\r)"