18-插入字符和美元字符
7.8 插入字符和美元字符
可以在正则表达式的开始处使用插入符号( ^
),表明匹配必须发生在被查找文本开始处。类似地,可以在正则表达式的末尾加上美元符号( $
),表示该字符串必须以这个正则表达式的模式结束。可以同时使用^和 $
,表明整个字符串必须匹配该模式,也就是说,只匹配该字符串的某个子集是不够的。
例如,正则表达式 r'^Hello'
匹配以 'Hello'
开始的字符串。在交互式环境中输入以下代码:
>>> beginsWithHello = re.compile(r'^Hello')
>>> beginsWithHello.search('Hello world!')
<re. Match object; span=(0, 5), match='Hello'>
>>> beginsWithHello.search('He said hello.') == None
True
正则表达式 r'\d$'
匹配以数字0~9结束的字符串。在交互式环境中输入以下代码:
>>> endsWithNumber = re.compile(r'\d$')
>>> endsWithNumber.search('Your number is 42')
<re. Match object; span=(16, 17), match='2'>
>>> endsWithNumber.search('Your number is forty two.') == None
True
正则表达式 r'^\d+$'
匹配从开始到结束都是数字的字符串。在交互式环境中输入以下代码:
>>> wholeStringIsNum = re.compile(r'^\d+$')
>>> wholeStringIsNum.search('1234567890')
<re. Match object; span=(0, 10), match='1234567890'>
>>> wholeStringIsNum.search('12345xyz67890') == None
True
>>> wholeStringIsNum.search('12 34567890') == None
True
前面交互式脚本例子中的最后两次 search()
调用表明,如果使用了^和$,那么整个字符串必须匹配该正则表达式。
因为我总是会混淆这两个符号的含义,所以我使用助记法“Carrots cost dollars”,提醒我插入符号在前面,美元符号在后面。