'[A-Za-z0-9-_]*'
'^[A-Za-z0-9-_]*$'
我想检查一个字符串是否只包含上述表达式中的符号,只是想确保字符串中没有像#%&/()
这样的奇怪符号。
我想知道这两个正则表达式之间是否有任何区别?开始和结束标志是否重要?它会以某种方式影响结果吗?
答案 0 :(得分:3)
Python正则表达式锚定在字符串的开头(就像在许多其他语言中一样):因此开头的^
符号没有任何区别。但是,$
符号非常有用:如果你不包含它,你只会匹配字符串的开头,结尾可能包含任何内容 - 包括你要排除的字符。试试re.match("[a-z0-9]", "abcdef/%&")
。
除此之外,您可能希望使用一个简单地排除您正在测试的字符的正则表达式,它是安全的(因此[^#%&/()]
- 或者您可能需要做一些事情来逃避括号;不记得它现在是如何运作的。)
答案 1 :(得分:1)
开头和结尾符号匹配字符串的开头和结尾。
第一个将匹配任何包含类[A-Za-z0-9-_]的零或更多次的String(基本上任何字符串......)。
第二个匹配空字符串,但不包含未在[A-Za-z0-9 -_]
中定义的字符的字符串答案 2 :(得分:0)
是的,它会。正则表达式可以匹配其输入中的任何位置。 #
将匹配您的第一个正则表达式。