正则表达式,急急急急!

wilsonily 2010-03-31 07:06:15
正则表达式中(?=X),(?!x),(?<=x)(?!x),是什么意思?怎么用啊?例如:Pattern p = Pattern.compile("(?<=a).{3}");
String s = "444a66b";
Matcher m = p.matcher(s);
while(m.find()) {
System.out.println(m.group());
}
他们分别输出结果是什么?最好解释一下!谢谢!
...全文
128 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
wilsonily 2010-04-04
  • 打赏
  • 举报
回复
4# 和5# 的看来是Java高手了 以后多多指教了! 并且谢谢各位了!我也在学Java啊,目前还在j2se阶段,菜鸟还算不上,努力了!
猿敲月下码 2010-04-01
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 bao110908 的回复:]
输出 66b

(?=X),(?!X),(?<=X),(?<!x)

这 4 个称为环视(lookaround)

前两个称为顺序环视(lookahead),后两个称为逆序环视(lookbehind)

带有 = 号的肯定型,带有 ! 号为否定型

(?<=a).{3} 表示匹配三个字符,这三个字符有个条件,就是这三个字符前面的一个字符为“a”。

(?<=a) 是不占用匹……
[/Quote]
有正则的地方就有火龙果 下次想找火龙果直接开个求正则的帖子就行了

愚人节快乐
  • 打赏
  • 举报
回复
输出 66b

(?=X),(?!X),(?<=X),(?<!x)

这 4 个称为环视(lookaround)

前两个称为顺序环视(lookahead),后两个称为逆序环视(lookbehind)

带有 = 号的肯定型,带有 ! 号为否定型

(?<=a).{3} 表示匹配三个字符,这三个字符有个条件,就是这三个字符前面的一个字符为“a”。

(?<=a) 是不占用匹配字符位的,只是表示字符间的空隙。

四个环视结构都是零长度匹配,也就是无任何匹配字符的表达式,只是用于作为匹配的条件判断。

444a|66b

(?<=a) 表示的是上面中“|”的位置,意思就是在这个间隙的前面有个字符 a
(?<!a) 表示这个间隙的前面除字符 a 的其他字符
(?=a) 表示这个间隙后面的字符应为 a
(?!a) 表示这个间隙后面为除 a 之外的其他字符

(?<=),(?<!) 表示往前看,因此称为逆序
(?=),(?!) 表示往后看,因此称为顺序

这个需要好好的理解,具体的可以看看我原来在下面这些帖子中的回复:

正则表达式 环视问题
http://topic.csdn.net/u/20080619/08/e4d3ce39-6649-45e2-8f01-34e83161e108.html

请解释一下正则的相关内容
http://topic.csdn.net/u/20080627/14/8a91b33a-f35c-4303-85b5-e0a8da462202.html

确保字符串是1-100的数,怎么写正则?
http://topic.csdn.net/u/20080503/01/3c82b040-43b9-4b44-847d-07b366285957.html

请详细解释一下你的正则表达式
http://topic.csdn.net/u/20080716/22/80cdd418-a0e9-4e7e-8435-df6d4bc11c4a.html
guoliang2010 2010-03-31
  • 打赏
  • 举报
回复
当前字符串中 从a的下一位开始,取 3 位字符。
水中影子 2010-03-31
  • 打赏
  • 举报
回复
没见过这种正则表达式

学习了
hjh811 2010-03-31
  • 打赏
  • 举报
回复
这个例子在马士兵的正则表达式那个视频里面有。。

(?=X),(?!x),(?<=x)(?!x)这几个我也忘记了 不常用的,写出来的正则表达式也费解,一般是可以用其他表达式来替代实现的

所以个人觉得可以忽略

62,616

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧