当前位置:  开发笔记 > 编程语言 > 正文

正则表达式:匹配开始或空格

如何解决《正则表达式:匹配开始或空格》经验,为你挑选了3个好方法。

正则表达式是否可以匹配空格字符串的开头?

我正在尝试用£符号替换货币缩写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'

我可以同时做两个后面的例子吗?



1> Zach Scriven..:

使用OR" |"运算符:

>>> re.sub(r'(^|\W)GBP([\W\d])', u'\g<1>£\g<2>', text)
u'\xa3 5 Off when you spend \xa375.00'



2> Motti..:

\b是单词边界,可以是空格,行的开头或非字母数字符号(\bGBP\b).


凉.我从你的答案中学到了两件事.我以前从未在正则表达式中使用过单词边界.2.如果你不小心在Python正则表达式上使用了u'而不是r''前缀,那么事情(尤其是\ b)就不能正常工作.
仅供参考,在postgres中,单词边界指示符是\ y而不是\ b

3> Martijn Laar..:

如果它前面是字符串或字边界的开头(字符串的开头已经是),并且在GBP出现数值或字边界之后,则替换GBP :

re.sub(u'\bGBP(?=\b|\d)', u'£', text)

通过使用前瞻,这消除了对任何不必要的反向引用的需要.足够包容?

推荐阅读
手机用户2402852307
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有