Java比较字符串和正则表达式 - while循环

3
我希望用户输入一个字符串,如果该字符串与我的正则表达式不匹配,则输出一条消息并要求用户再次输入值。
问题是,即使字符串与正则表达式匹配,它也会被视为不匹配。
我的正则表达式: 应该等于-Name, Name [[A-Z][a-zA-Z]*,\s[A-Z][a-zA-Z]*] 我的while循环:
  System.out.println("Enter the student's name in the following format - surname, forename: ");  studentName = input.next();
  while (!studentName.equals("[[A-Z][a-zA-Z]*,\\s[A-Z][a-zA-Z]*]")) {
    System.out.println("try again");
    studentName = input.next();
  }
2个回答

5
< p > equals 方法检查字符串是否相等,而不是匹配正则表达式。

< p > 只需将 equals 替换为 matches 即可。您还应该删除外部方括号。


可能 Name, Name 是您输入的两个分开的字符串。尝试在您打印的消息中添加错误的输入。 - phlogratos
看起来你是对的,它正在打印 Name, try again Name try again。我该怎么修复这个问题? - Colin747
如果您提供有关输入的更多信息,我们才能帮助您。 - phlogratos
什么是 input?它属于哪个类?这些值从哪里来? - phlogratos
1
Scanner 的 javadoc 表示:Scanner 使用分隔符模式将其输入拆分为标记,该模式默认匹配空格字符。 - phlogratos
显示剩余5条评论

3

你的正则表达式是否有误?

test.matches("[A-Z][a-zA-Z]*,\\s[A-Z][a-zA-Z]*")

对我来说运作良好。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接