正则表达式多行匹配两个字符串之间行的第一部分

Regex multiline match first part of lines between two strings

我对RegEx只有粗略的了解,难倒了!

我的文件格式如下:

>>  

    www.google.com  some stuff I don't want
    www.yahoo.com

<<section>>

    www.bing.com
    www.yahoo.com

<<section>>

    www.bing.com
    https://github.com/zeeshanu/learn-regex

以下是我希望匹配的条件:

我已经能够将这个正则表达式 select 我想要的行的一部分:

^([^>>]\s*\S*){1}

但我无法让它在适当的字符串中工作。

您可以使用

(?:\G(?!\A).*\R\h*|^>>\s*)\K\S+

regex demo。您很可能希望传递 i 修饰符以不区分大小写的方式进行模式匹配。

详情

  • (?:\G(?!\A).*\R\h*|^>>\s*) - 匹配上一个匹配项的结尾 (\G(?!\A)),然后匹配除换行符以外的任何 0+ 个字符,尽可能多 (.*),然后一个换行符 (\R),然后是任何 0+ 水平空格 (\h*),或者 (|) 在该行的开头有一个 >> 子字符串,然后是 0+空格 (\s*)
  • \K - 省略目前匹配的文本
  • \S+ - 并匹配 return 除了空格之外的 1 个或多个字符。