【问题标题】:How to select words with apostrophe using regular expression如何使用正则表达式选择带撇号的单词
【发布时间】:2020-02-17 23:03:48
【问题描述】:

我试图将一个字符串分成一个列表,但我需要让字符串包含由撇号连接的单词。例如:

String="My name is Melvin_JESUS, Guatemala, Dean'Olvier, 501soy...@ 1231 !"

应该给我一个结果:

['my', 'name', 'is', 'melvin', 'jesus', 'guatemala', '"dean'oliver"', 'soy']

我尝试了以下正则表达式:

my_patern= r"(?:^|(?<=\s)|-)[A-Za-z'\.]+(?=\s|\t|$|\b)"

但没有给我想要的结果。

【问题讨论】:

    标签: python regex regex-lookarounds


    【解决方案1】:

    你可以使用

    (?<![^\W\d_])[^\W\d_]+(?:['.][^\W\d_]+)*(?![^\W\d_])
    

    见regex demo

    详情

    • (?&lt;![^\W\d_]) - 比赛前不允许出现字母
    • [^\W\d_]+ - 1 个或多个字母
    • (?:['.][^\W\d_]+)* - 0 个或多个 ' 或 . 序列,然后是 1+ 个字母
    • (?![^\W\d_]) - 比赛后不允许出现字母。

    在 Python 中,使用

    re.findall(r'(?<![^\W\d_])[^\W\d_]+(?:['.][^\W\d_]+)*(?![^\W\d_])', text)
    

    【讨论】:

    • 非常感谢...这个解释对我很有帮助
    猜你喜欢
    • 2023-04-01
    • 2023-03-26
    • 2013-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-17
    • 2022-01-10
    相关资源
    最近更新 更多