【问题标题】:How to extract text between triple quotes using regular experssion in python如何在python中使用正则表达式提取三引号之间的文本
【发布时间】:2021-06-15 18:07:39
【问题描述】:

我有以下原始字符串:

s = "###Sample Input\r\n```\r\n3\r\n100 400 1000 1200\r\n100 450 1000 1350\r\n150 400 1200 1200\r\n```"

我想提取三引号之间的文本'3\r\n100 400 1000 1200\r\n100 450 1000 1350\r\n150 400 1200 1200\r\n'

我首先将此原始字符串转换为 python 字符串,然后应用以下模式:

pattern = r"Sample Input/s/s('''.*''')"
match = re.findall(pattern, s)
print(match)

但我只得到一个空列表作为输出。在这种情况下,用于提取三引号之间的文本的正确正则表达式是什么。

【问题讨论】:

  • 也许只有re.findall("```(.*?)```", s, re.DOTALL) 可以吗?
  • 您尝试阅读的行已被注释掉,不是吗?不应该是一个名为“s”的变量吗?
  • @WiktorStribiżew 我仍然得到一个空列表
  • @stever no 井号只是字符串的一部分,不是注释。是的,实际上它是一个存储在变量 s 中的字符串
  • 另外,那些是反引号而不是引号......(除非你将它用作文档字符串,否则这并不重要)

标签: python regex python-re


【解决方案1】:

使用

```([\w\W]*?)```

regex proof

解释

--------------------------------------------------------------------------------
  ```                      '```'
--------------------------------------------------------------------------------
  (                        group and capture to \1:
--------------------------------------------------------------------------------
    [\w\W]*?                 any character of: word characters (a-z,
                             A-Z, 0-9, _), non-word characters (all
                             but a-z, A-Z, 0-9, _) (0 or more times
                             (matching the least amount possible))
--------------------------------------------------------------------------------
  )                        end of \1
--------------------------------------------------------------------------------
  ```                      '```'

Python code

s = "###Sample Input\r\n```\r\n3\r\n100 400 1000 1200\r\n100 450 1000 1350\r\n150 400 1200 1200\r\n```"
matches = [m.group(1) for m in re.finditer("```([\w\W]*?)```", s)]
print(matches)

结果['\r\n3\r\n100 400 1000 1200\r\n100 450 1000 1350\r\n150 400 1200 1200\r\n']

【讨论】:

  • 谢谢!这是一个很好的解释,绝对解决了问题!
【解决方案2】:

你可以使用:

yourstring.split("```")[1]

请注意,这将为您提供``` 的前两次出现之间的一段文本

【讨论】:

  • 这不是我想要的,但它有效!。谢谢
猜你喜欢
  • 1970-01-01
  • 2012-02-09
  • 1970-01-01
  • 2018-03-18
  • 1970-01-01
  • 2017-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多