求高手解答 正则表达式 (急)

guanqing527 2012-07-29 02:13:30

我是正则表达式的菜鸟,求搭救:

有这样的模式:
String s ="jdkjfd9dskjflkfdhjdhfkjlj";
Matcher m =Pattern.compile("(.*)(f)(.*)").matcher(s);

然后我想要的是,
字符串中一共有4个f,要求得到匹配第一个f的前面内容和后面内容,然后把后面内容作为继续要匹配的字符串继续循环进行。
换句话说就是: 我想得到每次比较的第一个匹配成功的内容。
如:

import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class TestRegx {

public static void main(String [] args)
{
String s ="jdkjfd9dskjflkfdhjdhfkjlj";
Matcher m =Pattern.compile("(.*)f(.*)").matcher(s);

while(m.find())
{
System.out.println(m.group(1));
System.out.println(m.group(2));
}

}

}
得到的是 :jdkjfd9dskjflkfdhjdh
kjlj

而我想得到的是: jdkj
d9dskjflkfdhjdhfkjlj



...全文
119 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
幽狼 2012-07-30
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

引用 2 楼 的回复:

(?:(?!f).)+(?:(?=f)|$)


说了我是菜鸟。。要是你解释下你的这条语句我清楚了就给你分
[/Quote]
(?!f).:(?!f)顺序否定环视.匹配不是f的位置,紧跟着一个任意字符(.),也就是说某个字符能匹配到的条件是它前面不能出现f.
(?:(?!f).): 这个就是非捕获组.
(?:(?!f).)+:非捕获组的内容出现1次或多次.
(?:(?=f)|$):匹配两个位置.第一个就是出现f的地方.另一个就是字符序列的末尾.只要是用限制(?:(?!f).)+的.
这样解释够清楚了.如果还不清楚的话,先去了解正则的元字符.我答题不是为了分.可给也可不给.
guanqing527 2012-07-30
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

(?:(?!f).)+(?:(?=f)|$)
[/Quote]

说了我是菜鸟。。要是你解释下你的这条语句我清楚了就给你分
guanqing527 2012-07-30
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
名字:<div\b(?:(?!\bclass\b).)++class\s*=\s*(["']?)area\1[^>]*>([^<]+)

地区:<div\b(?:(?!\bclass\b).)++class\s*=\s*(["']?)area\1[^>]*>([^<]+)

智力:<div\b(?:(?!\bclass\b).)++class\s*=\s*(["']?)power\1[^>……
[/Quote]

名字是不是应该改下。。。哈。我已经解决了。。不过还是谢啦
幽狼 2012-07-30
  • 打赏
  • 举报
回复

名字:<div\b(?:(?!\bclass\b).)++class\s*=\s*(["']?)area\1[^>]*>([^<]+)

地区:<div\b(?:(?!\bclass\b).)++class\s*=\s*(["']?)area\1[^>]*>([^<]+)

智力:<div\b(?:(?!\bclass\b).)++class\s*=\s*(["']?)power\1[^>]*>([^<]+)
guanqing527 2012-07-29
  • 打赏
  • 举报
回复
按照你们的方法,我还是没弄出我的需求来。我还是把我的真正需求贴出来吧,求你们打救了。

....<></>
其他的标签
....<></>
<div class="no top3">1</div>
<div class="role"><a href="MyRanking-1842176.shtml" target="_blank">罗罗索索</a></div>
<div class="userPic"></div>
<scriptt></script>
<div class="area">福建</div>
<div class="power">2518</div>

....<></>
其他的标签
....<></>

<div class="no top3">2</div>
<div class="role"><a href="MyRanking-1123049.shtml" target="_blank">爺々縖仔</a></div>
<div class="userPic"><img src='pics/icon_user.gif' alt='有图有真相' title='有图有真相' /></div>
<scriptt></script>
<div class="area">山东区</div>
<div class="power">2260</div>

....<></>
其他的标签
....<></>
我想去解析出每个用户的信息(名字,地区,智力)。。可是怎么也写不对那正则表达式

该怎么写个正则表达式得出我的需求呢。。。(菜鸟在此不胜感激)
幽狼 2012-07-29
  • 打赏
  • 举报
回复
(?:(?!f).)+(?:(?=f)|$)
qybao 2012-07-29
  • 打赏
  • 举报
回复
改成
Matcher m =Pattern.compile("(.*?)f(.*)").matcher(s); //注意.*?和.*的区别

51,396

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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