字符串:
<html>
<body>
<table border=1>
[@cms.List chnlId='3']
<tr>
<td>标题:[@cms.ArtiContent.title /]</td>
<td>作者:[@cms.ArtiContent.author /]</td>
</tr>
[/cms]
</table>
</p>
<table border=1>
[@cms.ListPage chnlId='3']
<tr>
<td>标题2:[@cms.ArtiContent.title /]</td>
<td>作者2:[@cms.ArtiContent.author /]</td>
</tr>
[/cms]
</table>
</body>
</html>
我用的方法是:
String tag = "\\u005B@cms.List([\\w\\W\\s]*?)\\u005B/cms\\u005D";
Pattern ptag = Pattern.compile(tag);
Matcher mtag = ptag.matcher(template);
while (mtag.find()) {
for (int i = 0; i <= mtag.groupCount(); i++) {
System.out.println("==>标签:" + mtag.group(i)+"<===\n\n");
}
}
结果匹配的有重复,且不完整,可能是正则表达式不正确,请教各位。。。。
5 个解决方案
#1
问题描述不清!
1:你只说了开头和结尾,那当中呢?当中允许出现什么样的字符?允许换行么?这些东西会嵌套么?
2:再拿开头和结尾来说,匹配时需要不区分大小写么?
等等诸如此类!
如果问正则表达式的话,请在提问时达到下面最为基本的要求:
1,正则表达式是一种模式匹配,是根据字符串的规律来操作的,因此需要 详细说明具体要做些什么;
2,对于查找的问题, 详细说明寻找字符串的特征是什么,这些字符串的边界是什么,或者说有些什么规律;
3,对于替换的问题, 详细说明原串是什么,替换后是什么,有些什么规律;
4,对于验证的问题, 详细说明验证的格式是什么;
5,举两三个覆盖范围 尽可能广的示例。需要注意的是, 所回复的正则表达式仅仅能满足所提供的示例!
1:你只说了开头和结尾,那当中呢?当中允许出现什么样的字符?允许换行么?这些东西会嵌套么?
2:再拿开头和结尾来说,匹配时需要不区分大小写么?
等等诸如此类!
如果问正则表达式的话,请在提问时达到下面最为基本的要求:
1,正则表达式是一种模式匹配,是根据字符串的规律来操作的,因此需要 详细说明具体要做些什么;
2,对于查找的问题, 详细说明寻找字符串的特征是什么,这些字符串的边界是什么,或者说有些什么规律;
3,对于替换的问题, 详细说明原串是什么,替换后是什么,有些什么规律;
4,对于验证的问题, 详细说明验证的格式是什么;
5,举两三个覆盖范围 尽可能广的示例。需要注意的是, 所回复的正则表达式仅仅能满足所提供的示例!
#2
\[@cms\.List[^\]]*\](.|\n)+?\[\/cms\] 要这个吗
#3
顶!!
楼主还是把问题描述清楚吧
#4
非常感谢您的回答
1:你只说了开头和结尾,那当中呢?当中允许出现什么样的字符?允许换行么?这些东西会嵌套么?
当中可以用任何字符;
允许换行;
[@cms.] [/cms]之间不允许嵌套,我只需要取出[@cms.].....[/cms]这部分内容
2:再拿开头和结尾来说,匹配时需要不区分大小写么?
开头和结尾,我在程序中已全部转化为小写,不需要考虑。
#5
String regex = "(?i)\\[@cms\\.List(.*?)\\[/cms";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(str);
while(m.find()) {
System.out.println(m.group(1));
}
2:再拿开头和结尾来说,匹配时需要不区分大小写么?
开头和结尾,我在程序中已全部转化为小写,不需要考虑。
[@cms.List 当中的 List 明明有大写的,还说全部转为小写了呢!
如果有大写、小写,上面表达式中 (?i) 就可以了,如果都是统一的,把 (?i) 去掉就可以了。
#1
问题描述不清!
1:你只说了开头和结尾,那当中呢?当中允许出现什么样的字符?允许换行么?这些东西会嵌套么?
2:再拿开头和结尾来说,匹配时需要不区分大小写么?
等等诸如此类!
如果问正则表达式的话,请在提问时达到下面最为基本的要求:
1,正则表达式是一种模式匹配,是根据字符串的规律来操作的,因此需要 详细说明具体要做些什么;
2,对于查找的问题, 详细说明寻找字符串的特征是什么,这些字符串的边界是什么,或者说有些什么规律;
3,对于替换的问题, 详细说明原串是什么,替换后是什么,有些什么规律;
4,对于验证的问题, 详细说明验证的格式是什么;
5,举两三个覆盖范围 尽可能广的示例。需要注意的是, 所回复的正则表达式仅仅能满足所提供的示例!
1:你只说了开头和结尾,那当中呢?当中允许出现什么样的字符?允许换行么?这些东西会嵌套么?
2:再拿开头和结尾来说,匹配时需要不区分大小写么?
等等诸如此类!
如果问正则表达式的话,请在提问时达到下面最为基本的要求:
1,正则表达式是一种模式匹配,是根据字符串的规律来操作的,因此需要 详细说明具体要做些什么;
2,对于查找的问题, 详细说明寻找字符串的特征是什么,这些字符串的边界是什么,或者说有些什么规律;
3,对于替换的问题, 详细说明原串是什么,替换后是什么,有些什么规律;
4,对于验证的问题, 详细说明验证的格式是什么;
5,举两三个覆盖范围 尽可能广的示例。需要注意的是, 所回复的正则表达式仅仅能满足所提供的示例!
#2
\[@cms\.List[^\]]*\](.|\n)+?\[\/cms\] 要这个吗
#3
顶!!
楼主还是把问题描述清楚吧
#4
非常感谢您的回答
1:你只说了开头和结尾,那当中呢?当中允许出现什么样的字符?允许换行么?这些东西会嵌套么?
当中可以用任何字符;
允许换行;
[@cms.] [/cms]之间不允许嵌套,我只需要取出[@cms.].....[/cms]这部分内容
2:再拿开头和结尾来说,匹配时需要不区分大小写么?
开头和结尾,我在程序中已全部转化为小写,不需要考虑。
#5
String regex = "(?i)\\[@cms\\.List(.*?)\\[/cms";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(str);
while(m.find()) {
System.out.println(m.group(1));
}
2:再拿开头和结尾来说,匹配时需要不区分大小写么?
开头和结尾,我在程序中已全部转化为小写,不需要考虑。
[@cms.List 当中的 List 明明有大写的,还说全部转为小写了呢!
如果有大写、小写,上面表达式中 (?i) 就可以了,如果都是统一的,把 (?i) 去掉就可以了。