正则表达式匹配之间的一切

时间:2016-02-06 02:43:14

标签: regex go

我一直在尝试这个一个小时,但我不是regexpert。我想做的事情看起来相当简单,但它比我想象的要困难得多。

基本上我有这个:

<<< Some code

    def prnt(string)
        print(string)
    end

=====

    def println(string)
        puts(string)
    end

*****
<<< Some more code
...

我想要做的是捕捉第一行<<< Some code*****之间的所有内容。文件中会有很多像这样的块。

我到目前为止的正则表达式是(?:<<< .*\r?\n)([\s\S]+)(?:[*]{5}),但它并没有真正起作用。有任何想法吗?我正在使用的语言是Go。

2 个答案:

答案 0 :(得分:2)

别介意我弄清楚了!

(?:<<< .*\r?\n)([\s\S]*?)(?:[*]{5})

似乎最重要的是让匹配组在中间懒惰,以便尽可能少地匹配。

答案 1 :(得分:0)

这会捕获第1组中的目标,但您必须使用“dot matches newline”开关“s”:

<<<[^\r\n]+[\r\n]*(.*?)[*]{5}

请参阅live demo