我正在尝试在java中创建一个正则表达式,用于检查以下格式的字符串:
“FirstName LastName - Number / Number”
示例:
约翰约翰 - 66/25过去半个小时我一直在努力,看起来很简单,但我无法理解它。这是我最近的尝试:
[A-Z]{1}[a-z]+\s{1}[A-Z]{1}[a-z]+\s{1}\\-\s{1}[0-9]{2}\\/[0-9]{2}
考虑检查fname和lname的第一个字母。第一个和最后一个名称部分有效,但是“ - ”字符,之后不行。
正则表达式使用的代码:
public class Regex {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
while(true){
System.out.println("Enter the regular expression");
Pattern p = Pattern.compile(scan.nextLine());
System.out.println("Enter the matcher");
Matcher m = p.matcher(scan.nextLine());
boolean success = m.find();
System.out.println(success);
}
}
答案 0 :(得分:0)
短划线\\-
前面的双反斜杠和正斜杠\\/
实际上最终匹配了一个文字\
,这在您想要的字符串中不存在。
其他一些评论:
如果您只想要一个匹配,则不需要{1}
,除非指定了其他内容,否则这是隐式的。
此外,短划线-
不是角色类之外的特殊字符,因此不需要转义。
[0-9]
可简化为\d
清理:
[A-Z][a-z]+\s[A-Z][a-z]+\s-\s\d{2}/\d{2}