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

标签 regex autohotkey

我对正则表达式只有粗略的了解,我被难住了!

我的文件格式如下:

>>  

    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

以下是我希望满足的条件:

  • 仅包含第一个“>>”之后和第一个“<<”之前的行
  • 仅选择每行的第一个文本 block ,第一个文本后的空白后面没有文本
  • 忽略行中的任何初始空格(如果有)

我已经能够使用这个正则表达式来选择我想要的行的部分:

^([^>>]\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+ - 匹配并返回除空格之外的 1 个或多个字符。

关于正则表达式多行匹配两个字符串之间的行的第一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46551321/

相关文章:

python - 如何应用 re.sub() 但有异常(exception)

Ruby 匹配第一次出现的字符串以进行 gsub 替换

java - java中识别字符串文字的正则表达式是什么?

Autohotkey - 如何仅调整特定程序的音量?

drag-and-drop - 如何制作 AHK 脚本将当前播放文件从 winamp 拖放到另一个程序中?

c# - C# 中的 RegEx 无法正常工作

regex - 在 Perl 中围绕一个外部字符进行拆分。组内的最小假设

autohotkey - 如何在 AutoHotKey 的热字符串中声明变量?

notepad++ - Filezilla 自动上传热键(AutoHotkey)

toggle - 有条件地拦截 Autohotkey 中的鼠标点击?