【问题标题】:How to take middle content between two strings? [duplicate]如何在两个字符串之间取中间内容? [复制]
【发布时间】:2019-10-14 15:06:10
【问题描述】:

我需要在两个字符串分隔符之间取一个中间内容,事实上我在整个字符串中有三个打印的分隔符,我需要取第二个分隔符并将其中间内容朝向最后一个分隔符。

这是一个例子:

'__SEPARATOR__'\r\nVMlinux2@ubuntu:~$ ifconfig && echo '__SEPARATOR__'\r\nens33: flags=4163<UP, 'BROADCAST', 'RUNNING', 'MULTICAST>  mtu 1500inet 10.10.10.11  netmask 255.255.240.0  broadcast 10.10.10.255 __SEPARATOR__

正确的输出必须是:

\r\nens33: flags=4163<UP, 'BROADCAST', 'RUNNING', 'MULTICAST>  mtu 1500inet 10.10.10.11  netmask 255.255.240.0  broadcast 10.10.10.255 

我尝试了这个正则表达式但不起作用:

'__SEPARATOR__'.*?'__SEPARATOR__'((.|\r|\n|\r\n|\n\r)*)__SEPARATOR__

我的功能:

def get_cmd_output(output):
  regex = r"'__SEPARATOR__'.*?'__SEPARATOR__'((.|\r|\n|\r\n|\n\r)*)__SEPARATOR__"
  output = re.search(regex, output).group(1)
  return output

我做错了什么?

问候。

【问题讨论】:

  • 请出示你的python代码。
  • 为什么是正则表达式?这就像使用电锯切割冰棒棍一样。 split() 可能是你想要的这里

标签: python regex


【解决方案1】:

为什么不

yourString.split('__SEPARATOR__')[2].lstrip("'")

【讨论】:

    【解决方案2】:

    您需要使用DOTALL 标志编译您的REGEX,因为您的文本中有\n

      regex = re.compile(r"'__SEPARATOR__'.*?'__SEPARATOR__'(.*?)__SEPARATOR__", re.DOTALL)
    

    默认.不匹配\n,你可以简化正则表达式(.*?),但我认为你不需要,因为使用split提供的答案更容易。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-22
      • 2022-12-21
      • 2010-11-29
      • 2015-10-09
      • 2012-12-11
      • 2022-01-22
      • 1970-01-01
      相关资源
      最近更新 更多