如果在“-”和“-”之间,则打印字符串

时间:2019-06-18 21:22:02

标签: python regex

我有一个文本文件,该文件在'-'之间有多个字符串,并且我正在尝试打印'-'之间的每个字符串

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

function crazy() {
    'use strict';

    const badboy = {a: 1, a: 2};

    return badboy;
}

console.log(crazy().a); // prints 2

我正试图得出这样的结果:

['text1','text2','text3'],'text4']

但是相反,我的代码跳过了值并给了我这个:

['text1','text4']

2 个答案:

答案 0 :(得分:1)

尝试使用此简单的正则表达式r'(?<=-)[^-]*(?=-)'

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

答案 1 :(得分:0)

您可以使用

-\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+个空格,然后-立即位于当前位置的右侧