[英]Regular expression to find string prefix in Python grammar
在Python中定义字符串时,它的前缀可以是字母b
, r
和u
,大写或小写的任何顺序的任意混合,只要每个字母最多为一个,并且b
和u
可以不会一起出现。 再有就是无论是'
或"
或'''
或"""
我有兴趣制作一个正则表达式来捕获字符串的开头,直到开头的引号为止。 示例匹配:
br'
'
r"""
Ur'
B"
"
这些都应该是一个匹配项。
如何编写正则表达式来匹配这些?
正则表达式不能“以任何顺序最多进行一个”,因此我们必须预先生成可能的前缀组合。
幸运的是,我们可以使其不区分大小写,并且可以使引号成为单独的表达式; 我们最终以
import re
reg = re.compile("((?:b|u|r|br|ur|rb|ru)?(?:\'(?:\'\')?|\"(?:\"\")?))", re.I)
我们可以测试像
def test_reg():
good_tests = ["br'", "'", 'r"""', "Ur'", 'B"', '"']
for t in good_tests:
assert reg.match(t).group(0) == t, "Failed good test {}".format(t)
bad_tests = ["bU'", "bb'", 'Uru"']
for t in bad_tests:
assert reg.match(t) is None, "Failed bad test {}".format(t)
您可以这样指定一个正则表达式字符串:
r'regex(string|String)$'
这是我用于在python中进行正则表达式的一些代码:
string = "hello world"
match = re.search(r'(l{2})', string)
print str(match.groups())
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.