2013-02-18 157 views
1

...我已经寻找使用时间正则表达式生成器和检查器,但我似乎无法得到它的工作...正则表达式

我有这个字符串:hdr("");cr(92);cl(3,"",4,"420720250","random message here");etr();

到目前为止我的代码是:

private void strchecker() { 

    Pattern pattern = Pattern.compile("(\\d{9})"); 
    Matcher matcher = pattern.matcher(strLine); 
    if (matcher.find()) { 
     System.out.println(matcher.group(0)); //prints /{item}/ 
    } else { 
     //System.out.println("Match not found"); 
    } 

} 

此代码正在工作,它可以找到字符串中的9位数字。什么即时尝试做它找到正则表达式代码来搜索“CL(3”或“CL(2”,如果它存在然后发送9位数字的变量,我只是不知道如何找到CL( ?3或2 ..

任何意见

感谢 马特

+2

您不能只使用'cl \\(\\ d'? – 2013-02-18 03:31:10

+0

优秀!发现cl(但我需要它2或3,但不是1 – user2078674 2013-02-18 03:34:59

+1

'cl \\([23]'?那怎么样? – 2013-02-18 03:36:23

回答

0
/cl\([23].*(\d{9})/ 

最后的圆括号将捕获组1中的9位数。

+0

嗨,不起作用: (有没有一种方法可以将其转换为在JavaScript中工作? – user2078674 2013-02-18 03:47:13

+0

你是什么意思“它不起作用?”它似乎对我来说工作得很好......''hdr(“”); cr(92); cl(3,“”,4,“420720250”,“random message here”); etr();'。match(/ cl \([23]。*(\ d {9})/)[1]' - 你甚至可以在浏览器的控制台中执行此操作 – 2013-02-18 03:49:20

+0

我使用了精确的代码,但在eclipse中它说“无效的转义序列(有效的转义序列是\ b \ t \ n \ f \ r \”\'\\)“ – user2078674 2013-02-18 03:51:46

0

既然你注意到你正在使用JavaScript,我想你可以做这样的,因为你不能回顾后使用;你只需要抓取捕获组而不是使用完全匹配。

cl\\([23].*?(\\d{9}) 
+0

感谢您的帮助!但我正在使用javascript:p – user2078674 2013-02-18 03:41:27