我是编程新手,我被告知现在要避免使用正则表达式,但我发现它非常有用。
在编写程序以检查字符串是否只包含字母时,我在stackoverlow上发现^[a-zA-Z]+$
和[a-zA-Z]*
都会产生相同的结果。我理解[a-zA-Z]
是如何工作的,我理解[A-z]
如何与这两者不同,但我不理解+ $ vs ^ [] *或者为什么它们产生相同的结果而我是找不到任何解释的东西。
以下是我在其中使用的示例:
String student = input.next();
while (!student.matches("[a-zA-Z]*")) {
System.out.print("Invalid input. Enter name: ");
student = input.next();
}
这是我在这里的第一个问题,如果这种问题不受欢迎,那就很抱歉。
答案 0 :(得分:2)
*
为零或更多,+
为一个或多个。
但是,^
和$
存在较大差异。在第一个例子中,它说它必须只包含[a-zA-Z]
,其中字符串123abc123
不有效。
在第二个示例中,省略^
和$
,123abc123
有效。
答案 1 :(得分:2)
如你所知,
[a-zA-Z]
匹配单个大写或小写字母。
[a-zA-Z]*
连续匹配零个或多个大写或小写字母。
^[a-zA-Z]+$
将一个字符串与一个或多个大写或小写字母匹配,并以它结尾。意思是,你的字符串中唯一的东西是大写或小写字母。
^和$在处理数据流时扮演更多角色,使用正则表达式筛选出你想要的东西,同时忽略你没有的东西。最后一个模式可用于查找仅包含大写和小写字母的流。