我有一个文本文件,在“-”之间有多个字符串,我正在尝试打印“-”之间的每一个字符串
我尝试过这段代码,但它跳过了值。
import re
text= """
-text1-text2-text3
-text4-
"""
result = re.findall(r'-(.*?)-', text)
print(result,end="")我想得到这样的结果:
‘text4 1’,‘text4 2’,‘text4 3’,'text4']
但是,相反,我的代码跳过了值,并给出了以下内容:
‘text4 1’,'text4‘
发布于 2019-06-18 21:25:57
你可以用
-\s*(.*?)(?=\s*-)

import re
text= """
-text1-text2-text3
-text4-
"""
result = re.findall(r'-\s*(.*?)(?=\s*-)', text)
print(result) # => ['text1', 'text2', 'text3', 'text4']如果需要跨行匹配,请将re.S或re.DOTALL标志添加到re.findall中。
Regex详细信息
- -a连字符\s* - 0+白空间(.*?) -捕获组1:除换行字符以外的任何0+字符(?=\s*-) -一个积极的前瞻性,需要0+白空间,然后立即在当前位置的右边-发布于 2019-06-18 22:02:32
试试这个简单的regex r'(?<=-)[^-]*(?=-)'
>>> import re
>>> text= """
... -text1-text2-text3
... -text4-
... """
>>> print ([x.strip() for x in re.findall(r'(?<=-)[^-]*(?=-)', text)])
['text1', 'text2', 'text3', 'text4']https://stackoverflow.com/questions/56657229
复制相似问题