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

问题描述 投票:4回答:2

我想找到长度为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应该是:

药空气

java regex
2个回答
2
投票

你需要的正则表达式是

\bl\wf\b

说明:

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

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

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

3
投票

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

\bl\wf\b

说明

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

Demo

© www.soinside.com 2019 - 2024. All rights reserved.