首页 > 解决方案 > 正则表达式搜索行尾和下一行的开头

问题描述

试图想出一个正则表达式来在行尾和下一行的开头搜索关键字匹配(如果存在)

我在正则表达式下面尝试过,似乎没有返回想要的结果

re.compile(fr"\s(?!^)(keyword1|keyword2|keyword3)\s*\$\n\r\((\w+\W+|W+\w+))", re.MULTILINE | re.IGNORECASE)

例如,我的输入是

sentence = """ This is my keyword
/n value"""

上述情况下的输出应该是关键字值

提前致谢

标签: pythonregex

解决方案


您可以匹配关键字(或使用替代)以匹配更多关键字,并在关键字之后和匹配换行符之后考虑尾随制表符和空格。

按照您尝试的模式使用 2 个捕获组:

(?<!\S)(keyword)[\t ]*\r?\n[\t ]*(\w+)(?!\S)

解释

  • (?<!\S)负向后看,断言直接在左边的不是非空白字符
  • (keyword)在匹配关键字的组 1中捕获
  • [\t ]*匹配 0+ 个制表符或空格
  • \r?\n匹配换行符
  • [\t ]*匹配 0+ 个制表符或空格
  • (\w+)捕获组 2匹配 1+ 单词字符
  • (?!\S)负前瞻,断言右边的不是非空白字符

正则表达式演示| Python 演示

例如:

import re

regex = r"(?<!\S)(keyword)[\t ]*\r?\n[\t ]*(\w+)(?!\S)"
test_str = (" This is my keyword\n"
    " value")

matches = re.search(regex, test_str)

if matches:
    print('{} {}'.format(matches.group(1), matches.group(2)))

输出

关键字值


推荐阅读