首页 > 解决方案 > 使用正则表达式在其他字符串之间查找字符串,直到换行

问题描述

这是我正在使用的一些示例文本:

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]*/)

标签: regex

解决方案


将我的评论转换为答案,以便将来的访问者轻松找到该解决方案。

在 Ruby 中,你可以使用这个:

/Nmap.*?\ndata:[^\n]*/m

红宝石正则表达式演示

m使正则表达式引擎能够将新行与 Ruby 中的点匹配,在其他正则表达式中通常称为 DOTALL。


推荐阅读