正则表达式,用于在Python语法中查找字符串前缀

时间:2014-04-01 00:35:06

标签: python regex

在Python中定义字符串时,它的前缀可以是任意顺序的字母bru,大写或小写的任意混合,如只要每个字母中最多有一个字母,bu就不会出现在一起。然后是[{1}},'"'''

我有兴趣制作一个正则表达式来捕获字符串的开头,直到开头的引号。示例匹配:

"""

这些中的每一个都应该匹配。

如何编写正则表达式来匹配这些?

2 个答案:

答案 0 :(得分:1)

正则表达式不能以任何顺序执行任何一个",因此我们必须预先生成可能的前缀组合。

幸运的是,我们可以使它不区分大小写,我们可以将引号标记作为单独的表达式;我们最终

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)

答案 1 :(得分:0)

您可以像这样指定正则表达式字符串:

r'regex(string|String)$'

这是我在python中用来做正则表达式的一些代码:

string = "hello world"
match = re.search(r'(l{2})', string)
print str(match.groups())