【问题标题】:Find all matching pattern in a string [duplicate]在字符串中查找所有匹配模式[重复]
【发布时间】:2022-11-30 22:44:12
【问题描述】:

我试图从一个较大的字符串中获取与特定模式匹配的所有子字符串,

我有一个这样的字符串:

string = "{\huge \centering \bf{RAPPORT JOURNALIER \\ ***bouee*** \\ \formatDate{***day***}{***month***}{***year***}} \\ \small generated on~\today~at~\currenttime \par}"

我想在一个列表中列出三颗星 *** 之间的所有元素,我应该得到那个字符串:['bouee', 'day', 'month', 'year']

我可以通过在该字符串上循环轻松地做到这一点,但我确信有一种更优雅的方法可以使用 regex 模块来做到这一点,但我不熟悉它,而且我确信这是一个非常简单的问题在论坛上可以比我搜索以了解该模块更快地得到回答 :)(尽管我肯定会学习如何使用它,但它似乎是一个超级有用的模块)

谢谢 !

【问题讨论】:

    标签: python python-3.x


    【解决方案1】:

    是的,您可以为此使用“re”模块。

    import re
    
    re.findall('*{3}(.+?)*{3}', string)
    

    在这里,我们告诉它匹配由三个星号、任意数量的任意字符和另外三个星号组成的子字符串。然后,我们使用括号将内部字符标记为我们的“捕获组”,因此 re.findall 仅返回那些字符。

    请注意,问题不是特别明确。例如,如果您看到 ***word***word***word***,则不清楚是否应将其解释为。一般来说,针对这些类型的问题获得更高级的行为可能很困难或不可能。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-21
      • 1970-01-01
      • 2018-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多