python - 正则表达式搜索行尾和下一行的开头
问题描述
试图想出一个正则表达式来在行尾和下一行的开头搜索关键字匹配(如果存在)
我在正则表达式下面尝试过,似乎没有返回想要的结果
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"""
上述情况下的输出应该是关键字值
提前致谢
解决方案
您可以匹配关键字(或使用替代)以匹配更多关键字,并在关键字之后和匹配换行符之后考虑尾随制表符和空格。
按照您尝试的模式使用 2 个捕获组:
(?<!\S)(keyword)[\t ]*\r?\n[\t ]*(\w+)(?!\S)
解释
(?<!\S)
负向后看,断言直接在左边的不是非空白字符(keyword)
在匹配关键字的组 1中捕获[\t ]*
匹配 0+ 个制表符或空格\r?\n
匹配换行符[\t ]*
匹配 0+ 个制表符或空格(\w+)
捕获组 2匹配 1+ 单词字符(?!\S)
负前瞻,断言右边的不是非空白字符
例如:
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)))
输出
关键字值
推荐阅读
- ios - 如何为容器中的视图控制器提供参数?
- python - 如何找到存储在mongodb中的两条折线的重叠百分比?
- java - JSONException 获取键值
- c# - 如何使用 Selenium WebDriver 滚动到元素(使用无头模式时)
- sql-server - 将行级安全性扩展到桥接表
- context-free-grammar - 是什么让这个示例成为上下文无关语言而不是常规语言?
- c++ - 从日期字符串中获取日期、月份和年份值
- c++ - 查找 string_view 开头与其基础字符串之间距离的最佳方法
- python - 由于我在 python 中使用了来自 tkinter 的 optionmenu,因此调试不再起作用(在所有脚本中)
- reactjs - 我在哪里可以得到世博会的 android 包?