Python 如果介于“0”和“0”之间,则打印字符串-&引用;及-&引用;

Python 如果介于“0”和“0”之间,则打印字符串-&引用;及-&引用;,python,regex,Python,Regex,我有一个文本文件,它在“-”之间有多个字符串,我正在尝试打印“-”之间的每个字符串 我尝试过这段代码,但它跳过了值 import re text= """ -text1-text2-text3 -text4- """ result = re.findall(r'-(.*?)-', text) print(result,end="") 我试图得到这样的结果: ['text1'、'text2'、'text3']、'text4'] 但我的代码却

我有一个文本文件,它在“-”之间有多个字符串,我正在尝试打印“-”之间的每个字符串

我尝试过这段代码,但它跳过了值

import re

text=   """
        -text1-text2-text3
        -text4-
        """

result = re.findall(r'-(.*?)-', text)
print(result,end="")
我试图得到这样的结果:

['text1'、'text2'、'text3']、'text4']

但我的代码却跳过了值,并给出了以下结果:

['text1','text4']

您可以使用

-\s*(.*?)(?=\s*-)
请参阅和:

见:

如果需要跨行匹配,请将
re.S
re.DOTALL
标记添加到
re.findall

正则表达式详细信息

  • -
    -连字符
  • \s*
    -0+空格
  • (.*)
    -捕获组1:除换行符以外的任何0+字符
  • (?=\s*-)
    -一个正向前瞻,需要0+个空格,然后紧靠当前位置右侧

试试这个简单的正则表达式>代码> R'(很高兴为你工作)。如果我的答案对你有帮助(请参阅),也请考虑一下投票,因为你在达到15个代表点后有权获得投票权。注意,你可能会投票支持所有有帮助的答案。

import re
text=   """
        -text1-text2-text3
        -text4-
        """
result = re.findall(r'-\s*(.*?)(?=\s*-)', text)
print(result) # => ['text1', 'text2', 'text3', 'text4']
>>> import re
>>> text=   """
...         -text1-text2-text3
...         -text4-
...         """
>>> print ([x.strip() for x in re.findall(r'(?<=-)[^-]*(?=-)', text)])
['text1', 'text2', 'text3', 'text4']