如何在两个字符串之间取中间内容?

2024-05-12 21:57:47 发布

您现在位置:Python中文网/ 问答频道 /正文

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

例如:

'__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

我做错了什么?你知道吗

敬礼。你知道吗


Tags: 字符串内容outputrunningregexflagsnetmaskbroadcast
2条回答

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

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

默认情况下.不匹配\n,您可以简化REGEX (.*?),但我认为您不需要,因为使用split提供的答案更简单。你知道吗

为什么不呢

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

相关问题 更多 >