这个正则表达式怎么匹配?

shizuotong2 2008-04-17 02:29:02
HH:MM:SS TRNS:XXXXXX

HH:MM:SS 代表时间
TRNS:XXXXXX xxxxx是六位固定数字
...全文
204 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
yami251139 2008-04-18
  • 打赏
  • 举报
回复
....
好快的寶寶呀
  • 打赏
  • 举报
回复
我在 12 楼的那个看错了,把 TRNS 看成了 TRANS 了,呵呵,改正了一下,
并加上您在 15 楼提出的要求

需要注意的是:

07:59:28 TRNS:014989 CWD 3,700.00

如果 CWD 后面的数字不符合要求,比如是:3337.00 或者是 ,700.00 这种格式的,
只能抽取到:07:59:28 TRNS:014989 部分,后面的 CWD 部分抽取不到。

import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Test {

private final String regex =
"(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]\\s+" +
"(?:HOST\\s+ACCEPT|TRNS:\\s*\\d{6}" +
"(?:\\s+CWD\\s+\\d\\d?\\d?(?:,\\d{3})*\\.\\d\\d)?)";
private Pattern pattern = null;

public static void main(String args[]) {
String str = "adfadsf 00:00:00 TRNS: 123456 asdf" +
"asdf07:59:28 TRNS:123456 adfsdfasd" +
"adsfasf07:59:28 TRNS:014989 CWD 3,700.00asdfsf" +
"adsfasf07:59:28 TRNS:014989 CWD 20.00asdfsf" +
"asdf07:59:30 HOST ACCEPTasdfasdf";
Test test = new Test();
List<String> list = test.get(str);

for(String s : list) {
System.out.println(s);
}
}

public List<String> get(String str) {
if(pattern == null) {
pattern = Pattern.compile(regex);
}
List<String> list = new ArrayList<String>();
Matcher matcher = pattern.matcher(str);
while(matcher.find()) {
list.add(matcher.group());
}
return list;
}
}
shizuotong2 2008-04-18
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 yami251139 的回复:]
1,000.00
当中的符号要么?
刚刚那个是不要符号的。。。
要符号的话麻烦你说下符号的要求
是固定在那个位置么?
[/Quote]

要符号的,就是以3个标记逗号,不超过没有逗号
anqini 2008-04-17
  • 打赏
  • 举报
回复
http://unibetter.com/deerchao/zhengzhe-biaodashi-jiaocheng-se.htm

自己看会可以整这个出来了,
qjqwqjq 2008-04-17
  • 打赏
  • 举报
回复
路过,学习了
nihuajie05 2008-04-17
  • 打赏
  • 举报
回复
对哦
hmsuccess 2008-04-17
  • 打赏
  • 举报
回复
向12楼学习
seesea10523 2008-04-17
  • 打赏
  • 举报
回复
顶火龙果
yami251139 2008-04-17
  • 打赏
  • 举报
回复
1,000.00
当中的符号要么?
刚刚那个是不要符号的。。。
要符号的话麻烦你说下符号的要求
是固定在那个位置么?
yami251139 2008-04-17
  • 打赏
  • 举报
回复
private final String regex = "(?:[01][0-9] ¦2[0-3]):[0-5][0-9]:[0-5][0-9]\\s+TRANS:\\s*\\d{6}\\s+CWD\\s*\\d{6}";
要求是014989和CWD以及CWD和后面的数字当中有空格且最后的数字是6位
====================
你要学会自己参照了+。。。
shizuotong2 2008-04-17
  • 打赏
  • 举报
回复
还有一个问题

解决了立刻结贴,另加30
下面这个怎么匹配,数字都是不定值:

07:59:28 TRNS:014989 CWD 1,000.00

07:59:30 HOST ACCEPT
nihuajie05 2008-04-17
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 yami251139 的回复:]
引用 12 楼 bao110908 的回复:
我说了吧,这些你应该在发帖时就说明的,害嘿嘿


Java codeimport java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Test {

private final String regex = "(?:[01][0-9] ¦2[0-3]):[0-5][0-9]:[0-5][0-9]\\s+TRANS:\\s*\\d{6}";
private Pattern pattern = null;

public stati…
[/Quote]
赞LS...
鄙视LSS...
哈哈...鄙视小宝宝
yami251139 2008-04-17
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 bao110908 的回复:]
我说了吧,这些你应该在发帖时就说明的,害嘿嘿


Java codeimport java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Test {

private final String regex = "(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]\\s+TRANS:\\s*\\d{6}";
private Pattern pattern = null;

public static void main(String args[]) throws IOExc…
[/Quote]
笑的很猥琐,鉴定完毕
5555555555555555
分拿不到了。。。。
今天刚上就发现
号称以后再也不会打正则问题的宝宝很开心的回答了一个。。。。。。
  • 打赏
  • 举报
回复
我说了吧,这些你应该在发帖时就说明的,害嘿嘿

import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Test {

private final String regex = "(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]\\s+TRANS:\\s*\\d{6}";
private Pattern pattern = null;

public static void main(String args[]) throws IOException {
String str = "adfadsf 00:00:00 TRANS: 123456 asdf" +
"asdf23:00:00 TRANS:123456";
Test test = new Test();
List<String> list = test.get(str);

for(String s : list) {
System.out.println(s);
}
}

public List<String> get(String str) {
if(pattern == null) {
pattern = Pattern.compile(regex);
}
List<String> list = new ArrayList<String>();
Matcher matcher = pattern.matcher(str);
while(matcher.find()) {
list.add(matcher.group());
}
return list;
}
}
wren4255 2008-04-17
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 ssqmnlin 的回复:]
哦,没看清楚,现在知道了
[/Quote]

需要解释,我没看清楚,谢谢!
ssqmnlin 2008-04-17
  • 打赏
  • 举报
回复
哦,没看清楚,现在知道了
ssqmnlin 2008-04-17
  • 打赏
  • 举报
回复
为什么全部人的HH都是[01][0-9]
没有20:xx:xx的情况么
anqini 2008-04-17
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 kevinchj 的回复:]
JScript code
([0-1][0-9])|(2[0-4])(:[0-6][0-9]){2}\sTRNS:xxxxx
//你说xxxxx是固定的,那么你把它换成你的固定数字就好了
[/Quote]

\sTRNS:xxxxx改为\\sTRNS:xxxxx
shizuotong2 2008-04-17
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 bao110908 的回复:]
你是要验证,还是要从文章中把这些给抽取出来,要求不一样所用的方法也不一样。
[/Quote]

我是要从文章里边抽出来
anqini 2008-04-17
  • 打赏
  • 举报
回复
我也是刚学的,错了别笑哦

Pattern p = Pattern.compile("(([01]?[0-9]|2[0-4]):([0-5][0-9]):([0-5][0-9]))\\sTRNS:\\d{6}");
Matcher m = p.matcher("21:59:56 TRNS:111111");
加载更多回复(5)

62,628

社区成员

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

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