【问题标题】:RegEx split between two words two cut out text Python [duplicate]正则表达式在两个单词之间拆分两个剪切文本Python [重复]
【发布时间】:2021-04-07 13:49:06
【问题描述】:
import re

test = '''starterword
    relevant info 1
    relevant info 3
    relevant info 2
endword

lots of irrelevant stuff
starterword
    relevant info 8
    relevant info 7
    relevant info 4
endword

lots of irrelevant stuff

starterword
    relevant info 420
    relevant info 90
    relevant info lol
endword
'''

pattern = re.split('/^starterword(.*?) \^endword/',test,flags=re.MULTILINE)#|re.DOTALL)
print(pattern )
print(len(pattern ))

我有一个巨大的多行字符串,我需要一些信息。 我想用 RegEx 删除所有不相关的东西,但我尝试的一切都没有奏效。大多数情况下,一个包含相关信息的列表项中包含不相关的内容。

任何帮助将不胜感激!

【问题讨论】:

  • re.findall('^starterword\n(.*?)\nendword$',test, flags=re.MULTILINE|re.DOTALL)
  • @WiktorStribiżew 正则表达式的(.*?) 部分不起作用,因为“相关信息”部分有换行符。我使用([\w\s]+?) 来解决这个问题,但想知道你是否知道更好的解决方法。
  • .re.DOTALL 匹配任何字符,包括换行符。

标签: python regex


【解决方案1】:

使用您的示例文本,这个正则表达式

^starterword\n([\w\s]+?)^endword

将返回 3 个组

组 1

    relevant info 1
    relevant info 3
    relevant info 2

第 2 组

    relevant info 8
    relevant info 7
    relevant info 4

第 3 组

    relevant info 420
    relevant info 90
    relevant info lol

regex101.com 上看到它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-09
    • 2015-11-08
    • 1970-01-01
    相关资源
    最近更新 更多