Java 试着理解单词边界

Java 试着理解单词边界,java,regex,Java,Regex,我正在学习正则表达式和更具体的单词边界。我有一段代码,我觉得应该至少返回一个匹配项,但是它没有 我使用的代码有什么问题 public static void main(String[] args) { boolean matches; String [] various = {"Men of honour", "X Men", "Children of men", "Company men are great"}; for(int i = 0; i < var

我正在学习正则表达式和更具体的单词边界。我有一段代码,我觉得应该至少返回一个匹配项,但是它没有

我使用的代码有什么问题

public static void main(String[] args) 
{
    boolean matches;
    String [] various = {"Men of honour", "X Men", "Children of men", "Company men are great"}; 

    for(int i = 0; i < various.length; i++)
    {
        matches = Pattern.matches("\\bMen", various[i]);

        System.out.println("Does the string match the pattern? " + matches);
    }



}

这不是因为单词的边界。这是因为
.matches()
方法需要匹配整个字符串。它无法提取子匹配

你想要什么

Pattern regex = Pattern.compile("\\bMen", Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE);
for(int i = 0; i < various.length; i++)
{
    Matcher regexMatcher = regex.matcher(various[i]);
    matches = regexMatcher.find();
    System.out.println("Does the string match the pattern? " + matches);
}
Pattern regex=Pattern.compile(“\\bMen”,Pattern.CASE不区分大小写| Pattern.UNICODE_CASE);
for(int i=0;i
这不是因为单词的边界。这是因为
.matches()
方法需要匹配整个字符串。它无法提取子匹配

你想要什么

Pattern regex = Pattern.compile("\\bMen", Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE);
for(int i = 0; i < various.length; i++)
{
    Matcher regexMatcher = regex.matcher(various[i]);
    matches = regexMatcher.find();
    System.out.println("Does the string match the pattern? " + matches);
}
Pattern regex=Pattern.compile(“\\bMen”,Pattern.CASE不区分大小写| Pattern.UNICODE_CASE);
for(int i=0;i
当您使用
.matches()
时,您会询问正则表达式引擎您的模式是否匹配整个输入字符串。但是,您想知道您的模式是否可以在输入字符串中找到

使用:


当您使用
.matches()
时,您会询问正则表达式引擎您的模式是否匹配整个输入字符串。但是,您想知道您的模式是否可以在输入字符串中找到

使用:

Pattern.compile("\\bMen").matcher(various[i]).find()