首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >打印字符串如果介于"-“和"-”之间

打印字符串如果介于"-“和"-”之间
EN

Stack Overflow用户
提问于 2019-06-18 21:22:02
回答 2查看 161关注 0票数 1

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

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

代码语言:javascript
复制
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‘

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-06-18 21:25:57

你可以用

代码语言:javascript
复制
-\s*(.*?)(?=\s*-)

regex演示正则图

Python演示

代码语言:javascript
复制
import re
text=   """
        -text1-text2-text3
        -text4-
        """
result = re.findall(r'-\s*(.*?)(?=\s*-)', text)
print(result) # => ['text1', 'text2', 'text3', 'text4']

如果需要跨行匹配,请将re.Sre.DOTALL标志添加到re.findall中。

Regex详细信息

  • - -a连字符
  • \s* - 0+白空间
  • (.*?) -捕获组1:除换行字符以外的任何0+字符
  • (?=\s*-) -一个积极的前瞻性,需要0+白空间,然后立即在当前位置的右边-
票数 0
EN

Stack Overflow用户

发布于 2019-06-18 22:02:32

试试这个简单的regex r'(?<=-)[^-]*(?=-)'

代码语言:javascript
复制
>>> import re
>>> text=   """
...         -text1-text2-text3
...         -text4-
...         """
>>> print ([x.strip() for x in re.findall(r'(?<=-)[^-]*(?=-)', text)])
['text1', 'text2', 'text3', 'text4']
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56657229

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档