python - 打印介于 "-"和 "-"之间的字符串

标签 python regex

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

我已经尝试过这段代码,但是它正在跳过值。

import re

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

result = re.findall(r'-(.*?)-', text)
print(result,end="")

我试图得到这样的结果:

['文本1','文本2','文本3'],'文本4']

但我的代码正在跳过值并给我这个:

['文本1','文本4']

最佳答案

您可以使用

-\s*(.*?)(?=\s*-)

请参阅regex demoregex graph :

enter image description here

请参阅Python demo :

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

正则表达式详细信息

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

关于python - 打印介于 "-"和 "-"之间的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56657229/

相关文章:

python - 将 console_scripts entry_points 与 pythonw 一起使用?

python - 使用 Python urllib/urllib2 发出 http POST 请求以上传文件

python - MySQL-用Python替换列的所有字符

ruby - 为什么这个正则表达式在 ruby​​ 中为真?

JavaScript RegExp 可选捕获组

c++ - 正则表达式 C++ : extract substring

javascript - 您可以通过 python 或 javascript 使用机器人自动化从页面检索重定向 URL 吗?

python - 子图按相反顺序

python - 如何检查 DataFrame 字符串列的第一个单词是否存在于 Python 列表中?

regex - 在Scala中删除标点符号形式的文本-Spark