繁体   English   中英

匹配不以 " 开头的多行<p> " 不使用 "m" 修饰符(golang 风格)</p>

[英]Match multiple lines that do NOT start with "<p>" without using the "m" modifier (golang flavor)

我正在尝试匹配不以 HTML <p>标记开头的多行,仅使用g修饰符和 RegEx 的 Golang 风格。

这是一个例子:

Lorem ipsum

<p><span class="slugline">INNEN. Wohnung, Erdgeschoss – Tag</span></p><br>

Dolor sit amet

1234

<p><span class="slugline">INNEN. Wieslers Wohnung, Fahrstuhl – Tag</span></p><br>

Et respice finem

<p><span class="slugline">AUSSEN. Wohnung - Nacht</span></p><br>

<p><span class="slugline">INNEN. Wohnung, Erdgeschoss – Tag</span></p><br>

<p><span class="charleft">Maik</span><span class="dialogleft">(leise) Hallo.</span></p>

Quod erat demonstrandum

正则表达式应匹配以以下内容开头的行和段落:

  • 求数
  • 痛苦的坐着
  • 1234
  • 暂缓罚款
  • Quod erat demonstrandum

使用 Golang 风格的mg修饰符很容易: ^([^<\n\r]|<([^p]|$)).*

但我正在寻找一个没有m修饰符的正则表达式。 我无法仅使用g修饰符使其工作。

您可以匹配不需要的内容,而不是匹配您想要保留的内容,并将其用作拆分字符串的模式。

如果您的文本位于变量s中,您可以这样继续:

    para := regexp.MustCompile("[\n\r]+(<p>.*[\n\r]*)*")
    lines := para.Split(s, -1)
    for _, line := range lines {
        fmt.Println(line)
    }

这将是 output:

Lorem ipsum
Dolor sit amet
1234
Et respice finem
Quod erat demonstrandum

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM