【问题标题】:extract phrase between single quotes regex and python提取单引号正则表达式和python之间的短语
【发布时间】:2020-11-16 16:02:48
【问题描述】:

我想从通常在单引号之间的文本短语中提取

def extract_phrase(s):
    list = []
    pattern = re.compile("(?<=')[^']+(?=')")
    for value in pattern.findall(s):
        list.append(value)
    return list

print(extract_phrase("I can't Sleep and 'black lives matter'"))
['t Sleep and ', 'black lives matter']

如您所见,代码返回 2 个字符串,这不好,因为我只想返回“黑人的命也是命”。

为了解决这个问题,我尝试将 \b 放在正则表达式的开头和结尾,但是当我进行更改时我没有收到任何内容。

那么我该如何更改正则表达式语句,以便从以 ' 开头并以 ' 结尾的文本中获取所有字符串。

谢谢

【问题讨论】:

    标签: python regex parsing


    【解决方案1】:

    如果你的单引号都是平衡的并且没有转义,那么你可以使用这个正则表达式:

    \B'.*?'(?!\w)
    

    RegEx Demo

    正则表达式详细信息:

    • \B:断言\b 不匹配的位置
    • ' 匹配字符 '
    • .*?:匹配 0 个或多个任意字符
    • (?!\w): 否定前瞻断言下一个字符不是单词字符

    【讨论】:

    • 但是现在例如,如果我有'black lives matter can't sleep',那么它将返回'black lives matter can'..而不是单引号内的整个字符串。我需要将引号作为第一个字符,并且当有另一个引号后跟空格(不是制表符或换行符)时字符串结束
    猜你喜欢
    • 2012-02-09
    • 2019-01-07
    • 1970-01-01
    • 1970-01-01
    • 2013-04-12
    • 2018-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多