当前位置:嗨网首页>书籍在线阅读

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”,提醒我插入符号在前面,美元符号在后面。