Java正则表达式模式匹配正向前瞻

时间:2014-07-18 10:27:59

标签: java regex

我创建了一个匹配

的正则表达式
  • user_ent_mov
  • user_ent_mov_123
  • user_mov_ent123

但它不应该匹配

  • user_ent
  • user_ent123
  • user_mov123

我的声望表达

^user_(?:ent(?=_mov)|mov(?=_ent)).*$

一切都很好。但是当我进行详尽的测试时,我的regx失败了。

任何建议都将不胜感激。

PS:我已预先编译了我的正则表达式,并且未声明为静态。

1 个答案:

答案 0 :(得分:2)

保持简单。

user_(ent_mov|mov_ent)_?\d*

DEMO

使用String#matches()检查匹配项。

String regex="user_(ent_mov|mov_ent)_?\\d*";

System.out.println("user_ent_mov".matches(regex));    //true
System.out.println("user_ent_mov_123".matches(regex));//true
System.out.println("user_mov_ent123".matches(regex)); //true
System.out.println("user_ent".matches(regex));        //false
System.out.println("user_ent123".matches(regex));     //false
System.out.println("user_mov123".matches(regex));     //false