查找指定长度的正则表达式,以及在Java中指定的开始和结束

时间:2017-12-16 10:19:05

标签: java regex

我希望找到所有长度为3的单词,以' l'并以' f'结尾。 这是我的代码:

Pattern pt = Pattern.compile("\\bl.+?f{3}\\b");
Matcher mt = pt.matcher("#Java life! Go ahead Java,lyf,fly,luf,loof");

while(mt.find()) {
    System.out.println(mt.group());
}

它什么都没有显示。尝试了这个Pattern pt = Pattern.compile("l.+?f{3}");仍然没有得到预期o / p。

o / p应该是:

  

lyf luf

2 个答案:

答案 0 :(得分:3)

您可以使用单词边界\b,然后匹配l,单词字符\w,然后f以单词边界\b结尾。

\bl\wf\b

<强>解释

  • 匹配字边界\b
  • 匹配l
  • 匹配单词字符\w(\ w是速记字符,匹配ASCII字符[A-Za-z0-9_])
  • 匹配f
  • 匹配字边界\b

Demo

答案 1 :(得分:2)

你需要的正则表达式是

\bl\wf\b

说明:

由于你的单词长度必须是三个字符,这意味着l和f之间只能有一个字母,这就是为什么我没有把量词放在那里。

你的正则表达式是错误的,因为

  • f{3}表示3个f,而不是3个字符长
  • .匹配所有内容,包括非单词字符。请改用\w