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

查找指定长度的正则表达式,并在Java中指定起始和结束,java,regex,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.

我想找出所有长度为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

你需要的正则表达式是

\bl\wf\b
说明:

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

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

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

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

解释

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

您能告诉我\w的目的是什么吗?不过,你的回答很有帮助。@AndrewWatson匹配任何单词字符,即
0-9a-zA-Z_
。如果您只需要字母,也可以使用
[a-zA-Z]
代替
\w
。因此,在代码中,l\wf表示以l开头,以f结尾,对吗?是的,中间有一个单词字符@AndrewWatson您能告诉我\w的目的吗?@AndrewWatson
\w
匹配a