黑马程序员技术交流社区
标题:
正则问题
[打印本页]
作者:
张卫刚
时间:
2013-3-23 12:39
标题:
正则问题
本帖最后由 张卫刚 于 2013-3-31 01:18 编辑
3333333333333333.jpg
(8.71 KB, 下载次数: 45)
下载附件
2013-3-23 12:38 上传
第二组为什么是\A啊???
作者:
lucy198921
时间:
2013-3-24 11:33
第二组是转译.
作者:
何衍其
时间:
2013-3-30 18:27
“1 ((A)(B(C)))
2 \A
3 (B(C))
4 (C) “
是J从DK API中文版Pattern类中的摘录中。比对了JDK API英文版的Pattern类,发现“2 \A ”是排版错了。英文版本如下:
1 ((A)(B(C)))
2 (A)
3 (B(C))
4 (C)
正规中的组和捕获代码示例如下:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class PatternTest {
public static void main(String[] args) {
String text = "<textarea rows=\"20\" cols=\"70\">nexus maven repository index properties updating index central</textarea>";
//下面的正则表达式中共有四个捕获组:(<textarea.*?>)、(.*?)、(</textarea>)和整个匹配到的内容
String reg = "(<textarea.*?>)(.*?)(</textarea>)";
Pattern p = Pattern.compile(reg);
Matcher m = p.matcher(text);
while (m.find()) {
System.out.println(m.group(0)); // 整个匹配到的内容
System.out.println(m.group(1)); // (<textarea.*?>)
System.out.println(m.group(2)); // (.*?)
System.out.println(m.group(3)); // (</textarea>)
}
}
}
复制代码
更多的讲解见:JAVA正则表达式-捕获组与非捕获组
作者:
何衍其
时间:
2013-3-30 18:33
”1 ((A)(B(C)))
2 \A
3 (B(C))
4 (C) “
是JDK API中文版的Pattern类中的摘录吧,比对JDK API英文版的Pattern类,发现”2 \A “是排版错了。英文版的Pattern类这部分摘录为:
”1 ((A)(B(C)))
2 (A)
3 (B(C))
4 (C) “
捕获组代码示例如下
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class PatternTest {
public static void main(String[] args) {
String text = "<textarea rows=\"20\" cols=\"70\">nexus maven repository index properties updating index central</textarea>";
//下面的正则表达式中共有四个捕获组:(<textarea.*?>)、(.*?)、(</textarea>)和整个匹配到的内容
String reg = "(<textarea.*?>)(.*?)(</textarea>)";
Pattern p = Pattern.compile(reg);
Matcher m = p.matcher(text);
while (m.find()) {
System.out.println(m.group(0)); // 整个匹配到的内容
System.out.println(m.group(1)); // (<textarea.*?>)
System.out.println(m.group(2)); // (.*?)
System.out.println(m.group(3)); // (</textarea>)
}
}
}
复制代码
希望有帮助。
作者:
何衍其
时间:
2013-3-30 18:34
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class PatternTest {
public static void main(String[] args) {
String text = "<textarea rows=\"20\" cols=\"70\">nexus maven repository index properties updating index central</textarea>";
//下面的正则表达式中共有四个捕获组:(<textarea.*?>)、(.*?)、(</textarea>)和整个匹配到的内容
String reg = "(<textarea.*?>)(.*?)(</textarea>)";
Pattern p = Pattern.compile(reg);
Matcher m = p.matcher(text);
while (m.find()) {
System.out.println(m.group(0)); // 整个匹配到的内容
System.out.println(m.group(1)); // (<textarea.*?>)
System.out.println(m.group(2)); // (.*?)
System.out.println(m.group(3)); // (</textarea>)
}
}
}
作者:
何衍其
时间:
2013-3-30 22:10
本帖最后由 何衍其 于 2013-3-30 22:16 编辑
1
((A)(B(C)))
2
\A
3
(B(C))
4
(C)
是JDK API中文版Pattern类中的片段吧,其中的”2 \A“是排版错了。
英文版的如下:
1
((A)(B(C)))
2
(A)
3
(B(C))
4
(C)
组和捕获的例子如下:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class PatternTest {
public static void main(String[] args) {
String text = "<textarea rows=\"20\" cols=\"70\">nexus maven repository index properties updating index central</textarea>";
//下面的正则表达式中共有四个捕获组:(<textarea.*?>)、(.*?)、(</textarea>)和整个匹配到的内容
String reg = "(<textarea.*?>)(.*?)(</textarea>)";
Pattern p = Pattern.compile(reg);
Matcher m = p.matcher(text);
while (m.find()) {
System.out.println(m.group(0)); // 整个匹配到的内容
System.out.println(m.group(1)); // (<textarea.*?>)
System.out.println(m.group(2)); // (.*?)
System.out.println(m.group(3)); // (</textarea>)
}
}
}
复制代码
作者:
陈丽莉
时间:
2013-3-30 23:46
若还有问题,继续追问;没有的话,将帖子分类改成【已解决】哦~
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2