繁体   English   中英

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

[英]Regular expression to find string prefix in Python grammar

在Python中定义字符串时,它的前缀可以是字母bru ,大写或小写的任何顺序的任意混合,只要每个字母最多为一个,并且bu可以不会一起出现。 再有就是无论是'"'''"""

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

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM