正则表达式是否可以匹配空格或字符串的开头?
我正在尝试用£符号替换货币缩写GBP.我可以匹配任何以英镑开头的东西,但我想要保守一点,并寻找周围的某些分隔符.
>>> import re >>> text = u'GBP 5 Off when you spend GBP75.00' >>> re.sub(ur'GBP([\W\d])', ur'£\g<1>', text) # matches GBP with any prefix u'\xa3 5 Off when you spend \xa375.00' >>> re.sub(ur'^GBP([\W\d])', ur'£\g<1>', text) # matches at start only u'\xa3 5 Off when you spend GBP75.00' >>> re.sub(ur'(\W)GBP([\W\d])', ur'\g<1>£\g<2>', text) # matches whitespace prefix only u'GBP 5 Off when you spend \xa375.00'
我可以同时做两个后面的例子吗?
使用OR" |
"运算符:
>>> re.sub(r'(^|\W)GBP([\W\d])', u'\g<1>£\g<2>', text) u'\xa3 5 Off when you spend \xa375.00'
\b
是单词边界,可以是空格,行的开头或非字母数字符号(\bGBP\b
).
如果它前面是字符串或字边界的开头(字符串的开头已经是),并且在GBP出现数值或字边界之后,则替换GBP :
re.sub(u'\bGBP(?=\b|\d)', u'£', text)
通过使用前瞻,这消除了对任何不必要的反向引用的需要.足够包容?