正则表达式最后匹配怎么写

petit 2010-01-25 01:10:50
字符串:QNH:30.36 英寸汞柱 (约 1028 百帕 )和QNH: 1028 百帕 (约 30.36 英寸汞柱 )
目的:无论是上面那种字符串,我希望把 1028百帕这段字符找出来

现在我使用的正则表达式是:([0-9]+)(.)*百帕
对于“QNH: 1028 百帕 (约 30.36 英寸汞柱 )”,该表达式可以正确找出
但对于“QNH:30.36 英寸汞柱 (约 1028 百帕 )”,表达式找出“30.36 英寸汞柱 (约 1028 百帕”,而我只是想找“1028 百帕”

请问表达式应该怎么写?
...全文
312 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
windgh 2010-01-26
  • 打赏
  • 举报
回复
[Quote=引用楼主 petit 的回复:]
字符串:QNH:30.36 英寸汞柱 (约 1028    百帕 )和QNH: 1028    百帕  (约 30.36 英寸汞柱 )
目的:无论是上面那种字符串,我希望把 1028百帕这段字符找出来

现在我使用的正则表达式是:([0-9]+)(.)*百帕
对于“QNH: 1028    百帕  (约 30.36 英寸汞柱 )”,该表达式可以正确找出
但对于“QNH:30.36 英寸汞柱 (约 1028    百帕 )”,表达式找出“30.36 英寸汞柱 (约 1028    百帕”,而我只是想找“1028    百帕”

请问表达式应该怎么写?
[/Quote]
你的表达式中的那个(.)*有问题
你的表达式的意思是:以一段数字开始,然后中间是任意一段字符,最后以百帕结尾
所以第二个字符串匹配出来是那个结果

至于怎么改,上面很多答案,不再重复了,反正只要把那个(.)替换掉就行
残雪龙骑 2010-01-25
  • 打赏
  • 举报
回复
Pattern p = Pattern.compile("(\\d*\\s*.{2}(?<=百帕))");
Matcher m = p.matcher("QNH: 1028 百帕 (约 30.36 英寸汞柱 ");
while(m.find()){
System.out.println(m.group());
}

这个绝对可以

psyuhen 2010-01-25
  • 打赏
  • 举报
回复
[30.36|1028]

不过用上面就可
貌似要转换才可以的窝。
nihuajie05 2010-01-25
  • 打赏
  • 举报
回复
\d+\s+百帕
阿_布 2010-01-25
  • 打赏
  • 举报
回复
String pattern = "\\d+([^\\d]*)百帕";
String html = "QNH:30.36 英寸汞柱 (约 1028 百帕 )和QNH: 1028 df 百帕 (约 30.36 英寸汞柱 )";
Matcher match = Pattern.compile(pattern).matcher(html);
while(match.find()){
System.out.println(match.group());
}
白马老丸子 2010-01-25
  • 打赏
  • 举报
回复
正则表达式改为:([0-9]+)(\s)*百帕
-过客- 2010-01-25
  • 打赏
  • 举报
回复
哦,后面的用*比较好

String pattern = "\\d+\\D*百帕";
-过客- 2010-01-25
  • 打赏
  • 举报
回复
String pattern = "\\d+\\D+百帕";
petit 2010-01-25
  • 打赏
  • 举报
回复
petit 2010-01-25
  • 打赏
  • 举报
回复
请留意我的字符串!

如何把“QNH:30.36 英寸汞柱 (约 1028 百帕 )”中的1028到百帕间的文字找出来
说白了,我是想要“最后一组数字到百帕”间的内容!
2到20个英文 2010-01-25
  • 打赏
  • 举报
回复
你是想只找1028 到 百帕中间的吗

kdfjasl1028lldjsla百帕dfsdaff

你想找出1028lldjsla百帕是这意思吗

62,612

社区成员

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

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