如何在python 3中的某个文本之前找到字符串的最短子串

How to find the shortest of substring of string before a certain text in python 3

我想在Python3中的某个文本之前提取字符串的最短子字符串。例如,我有以下字符串。

\n...\n...\n...TEXT

我想提取'TEXT'之前刚好包含两个\n的字符串的最短子串。示例文本可能有 \n 的随机数和 \n.

之间的随机字母

我已经在 Python 3.4 中尝试过,但我得到的结果与原文相同。似乎当我尝试代码时,它发现第一个 '\n' 作为第一个搜索结果,并将其余的 '\n' 视为任何其他文本。

text='\n abcd \n efg \n hij TEXT'

pattern1=re.compile(r'\n.\*?\n.\*?TEXT', re.IGNORECASE)

obj = re.search(pattern1, text)

obj.group(0)

当我尝试我的代码时,我得到的结果是 \n abcd \n efg \n hij TEXT,与输入完全相同。

我希望结果是

\n efg \n hij TEXT

谁能帮我解决这个问题?

使用负前瞻的正则表达式:

import re

text = '\n abcd \n efg \n hij TEXT'
pattern = re.compile(r'(\n(?!.*\n.*\).*)')
res = re.search(pattern, str(respData))
res.group(0)

使用python方法:

text = '\n abcd \n efg \n hij TEXT'
text[text[:text.rfind("\n")].rfind("\n"):]

我不确定我是否理解问题... 使用简单的拆分文本,meaby 很有用:

text = '\\n abcd \\n efg \\n hij TEXT - the rest of string'
text = text.split('TEXT')[0]
list_part = text.split('\\n ')
print(list_part)
minimal_set = text
for parts in list_part:
 if len(parts) is not 0 and len(parts) < len(minimal_set):
  minimal_set = parts
print (minimal_set)