【问题标题】:Match text between two strings with regular expression使用正则表达式匹配两个字符串之间的文本
【发布时间】:2015-09-20 13:38:46
【问题描述】:

我想使用一个正则表达式来匹配两个字符串之间的任何文本:

Part 1. Part 2. Part 3 then more text

在本例中,我想搜索“第 1 部分”和“第 3 部分”,然后获取介于两者之间的所有内容:“。第 2 部分。”

我正在使用 Python 2x。

【问题讨论】:

    标签: python regex python-2.x


    【解决方案1】:

    使用re.search

    >>> import re
    >>> s = 'Part 1. Part 2. Part 3 then more text'
    >>> re.search(r'Part 1\.(.*?)Part 3', s).group(1)
    ' Part 2. '
    >>> re.search(r'Part 1(.*?)Part 3', s).group(1)
    '. Part 2. '
    

    或使用re.findall,如果出现不止一次。

    【讨论】:

    • 请注意,想要的答案是". Part 2. ",所以正则表达式应该是 r'Part 1(.*?)Part 3'。请看我的回答。
    • 感谢您的回答,但这与换行符不匹配。
    【解决方案2】:

    带正则表达式:

    >>> import re
    >>> s = 'Part 1. Part 2. Part 3 then more text'
    >>> re.search(r'Part 1(.*?)Part 3', s).group(1)
    '. Part 2. '
    

    没有正则表达式,这个适用于您的示例:

    >>> s = 'Part 1. Part 2. Part 3 then more text'
    >>> a, b = s.find('Part 1'), s.find('Part 3')
    >>> s[a+6:b]
    '. Part 2. '
    

    【讨论】:

    • 你是怎么想出 6 的,因为用户在两者之间说了什么?
    • @VetrivelPS 是 6,因为“part 1”的长度是 6。str.find() 返回第一个字符的位置。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多