regex - 使用正则表达式在其他字符串之间查找字符串,直到换行
问题描述
这是我正在使用的一些示例文本:
Nmap scan report for XYZ\n
blah blah blah\n
blah blah blah\n
blah blah blah\n
data: here\n\n
我如何捕获从(包括)Nmap scan
一直到包含data
直到该行末尾的行的所有内容?更改后的文本,data
因此我需要扫描直到data
并贯穿该行的其余部分。
我努力了:
.scan(/Nmap scan.*?data.*?/m)[1]
但这捕获了从Nmap scan
单词到单词的所有内容data
。我想.*?
在这个词之后data
也意味着捕获该行之后的所有内容。没运气。
也试过(?ms)^Nmap.*?\ndata:[^\n]*
但没有运气,如下图:
2.5.1 :192 > puts evidence.scan(/(?ms)^Nmap.*?\ndata:[^\n]*/)
Traceback (most recent call last):
SyntaxError ((irb):192: undefined group option: /(?ms)^Nmap.*?\ndata:[^\n]*/)
解决方案
将我的评论转换为答案,以便将来的访问者轻松找到该解决方案。
在 Ruby 中,你可以使用这个:
/Nmap.*?\ndata:[^\n]*/m
m
使正则表达式引擎能够将新行与 Ruby 中的点匹配,在其他正则表达式中通常称为 DOTALL。
推荐阅读
- java - 如何从设置活动中获取字符串数据并将其发送到另一个活动?
- bootstrap-4 - Bootstrap 4中是否有间距混合?
- python - 如何在 Python 中编码/解码这个 BeautifulSoup 字符串,以便输出非标准拉丁字符?
- python - Anaconda 没有响应
- python - Istio egress 给出来自 python 微服务的“上游连接错误或在标头之前断开/重置”错误
- asp.net-mvc-5 - 在提交表单时查看未将数据传递给控制器
- coq - 什么是 Coq 中一个简单证明的好例子,其中结论有一个存在量词?
- dart - 第一次异步调用值为NULL,在构建MainPage时导致断言错误(Widget脏)
- python - Python 在 Raspberry Pi 3 上尝试发送 ARP 请求时引发 AttributeError
- javascript - JS如何返回所有同名的人