如何将模式与 Java 中的字符串变量匹配

How to match a pattern with String variable in Java

我有一个代码应该获取一个输入,从第一个输入中获取最后两个字母,然后将第二个输入与最后两个字母匹配(例如 glam、slam)。问题是它一直转到 else 语句而不是 if 语句。模式的构建方式是否存在问题?

import java.util.regex.Pattern;
import java.util.regex.Matcher;
import java.util.Scanner;

public class MatchyPattern {

    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        
        System.out.print("Enter the first word: ");
        String fw;
        fw = s.nextLine();
        String lastTwo = fw.substring(fw.length() - 2);
        char[] sub = lastTwo.toCharArray();
        var p = Pattern.compile("[a-zA-Z]{1,2}" + sub + "]");
        
        
        System.out.print("Enter the second word: ");
        String sw;
        sw = s.nextLine();
        
        Matcher m = p.matcher(sw);
        
        if (m.matches()){
            System.out.println(fw + " rhymes with " + sw);
        }else{
        System.out.println("I'm not sure! Sorry!");
        }

    
    }
    
}    

您似乎不明白 [C@37f8bb67(@ 变化之后的部分)是什么,您天真地试图“关闭”括号。你看到的是默认数组toString,在代码中根本没有意义


您可以只用最后 2 个字符(作为字符串)填充模式

var p = Pattern.compile("[a-zA-Z]{1,2}" + lastTwo);