开始和结束在python中签署正则表达式

时间:2011-12-14 15:27:44

标签: python regex

'[A-Za-z0-9-_]*'

'^[A-Za-z0-9-_]*$'

我想检查一个字符串是否只包含上述表达式中的符号,只是想确保字符串中没有像#%&/()这样的奇怪符号。

我想知道这两个正则表达式之间是否有任何区别?开始和结束标志是否重要?它会以某种方式影响结果吗?

3 个答案:

答案 0 :(得分:3)

Python正则表达式锚定在字符串的开头(就像在许多其他语言中一样):因此开头的^符号没有任何区别。但是,$符号非常有用:如果你不包含它,你只会匹配字符串的开头,结尾可能包含任何内容 - 包括你要排除的字符。试试re.match("[a-z0-9]", "abcdef/%&")

除此之外,您可能希望使用一个简单地排除您正在测试的字符的正则表达式,它是安全的(因此[^#%&/()] - 或者您可能需要做一些事情来逃避括号;不记得它现在是如何运作的。)

答案 1 :(得分:1)

开头和结尾符号匹配字符串的开头和结尾。

第一个将匹配任何包含类[A-Za-z0-9-_]的零或更多次的String(基本上任何字符串......)。

第二个匹配空字符串,但不包含未在[A-Za-z0-9 -_]

中定义的字符的字符串

答案 2 :(得分:0)

是的,它会。正则表达式可以匹配其输入中的任何位置。 # 匹配您的第一个正则表达式。