在Scala中使用正则表达式(String + number)

时间:2015-06-02 19:10:53

标签: java regex scala

我使用回归表达式来查找模式,例如:

"Today USER ID: 123556 cancelled"
"January USER ID: 236477 renewed"
"February USER ID: 645689 dispute"

基本上我正在寻找包含“USER ID:”+数字的字符串。我使用以下代码,但它无法匹配任何东西。有人可以提出一些建议吗?

if (myString.matches("USER ID: ([0-9]+)")) {
      println(a)
}

3 个答案:

答案 0 :(得分:3)

应该是:

if (myString.matches("^USER ID: ([0-9]+)$")) {

在正则表达式字符串中没有斜杠,并且在USER ID后面没有空格:

刚刚测试过,它对我有用,如下所示:

String string =  "USER ID: 12345";
if(string.matches("^USER ID: ([0-9]+)$")){
     System.out.println("matches");
}

有很多好的"正则表达式的cheatsheets"在那里。你可以在这里找到一个这样的: http://www.cheatography.com/davechild/cheat-sheets/regular-expressions/

答案 1 :(得分:1)

^USER ID: ([0-9]+)$

        ^^

您错过了此space

答案 2 :(得分:0)

在Scala中(在标记之后),定义此正则表达式

buttonClicked

我们在数字序列之前允许多个空格;因此

val re = "USER ID:\\s+\\d+".r
如果找到模式,则

传递val a = "Today USER ID: 123556 cancelled" re.findFirstIn(a) Option[String] = Some(USER ID: 123556) 值,否则为Some[String]

要回答是否找到了模式,请考虑

None