regex - 如何使用正则表达式通过第 k 行获得第 j 个?
问题描述
是否有正则表达式来提取行范围,例如仅例如第 4 到第 6 行(但正则表达式应该是通用的,在某些时候我将更改需要参数化的行),下面应该返回
<edgeData file="e1det_-143547931#1_1-results-aggregated.xml" id="e1det_-143547931#1_1"/>
<edgeData file="e1det_143547931#0_0-results-aggregated.xml" id="e1det_143547931#0_0"/>
<edgeData file="e1det_143547931#0_1-results-aggregated.xml" id="e1det_143547931#0_1"/>
完整数据
<?xml version="1.0" ?>
<additional>
<edgeData file="e1det_-143547931#1_0-results-aggregated.xml" id="e1det_-143547931#1_0"/>
<edgeData file="e1det_-143547931#1_1-results-aggregated.xml" id="e1det_-143547931#1_1"/>
<edgeData file="e1det_143547931#0_0-results-aggregated.xml" id="e1det_143547931#0_0"/>
<edgeData file="e1det_143547931#0_1-results-aggregated.xml" id="e1det_143547931#0_1"/>
<edgeData file="e1det_143551389#1_0-results-aggregated.xml" id="e1det_143551389#1_0"/>
<edgeData file="e1det_143551389#1_1-results-aggregated.xml" id="e1det_143551389#1_1"/>
<edgeData file="e1det_-143547931#2_0-results-aggregated.xml" id="e1det_-143547931#2_0"/>
<edgeData file="e1det_-143547931#2_1-results-aggregated.xml" id="e1det_-143547931#2_1"/>
<edgeData file="e1det_143547931#1_0-results-aggregated.xml" id="e1det_143547931#1_0"/>
<edgeData file="e1det_143547931#1_1-results-aggregated.xml" id="e1det_143547931#1_1"/>
<edgeData file="e1det_143553082#1_0-results-aggregated.xml" id="e1det_143553082#1_0"/>
<edgeData file="e1det_143553082#1_1-results-aggregated.xml" id="e1det_143553082#1_1"/>
<edgeData file="e1det_-143551389#1_0-results-aggregated.xml" id="e1det_-143551389#1_0"/>
<edgeData file="e1det_-143551389#1_1-results-aggregated.xml" id="e1det_-143551389#1_1"/>
<edgeData file="e1det_143551389#0_0-results-aggregated.xml" id="e1det_143551389#0_0"/>
<edgeData file="e1det_143551389#0_1-results-aggregated.xml" id="e1det_143551389#0_1"/>
<edgeData file="e1det_348320661#1_0-results-aggregated.xml" id="e1det_348320661#1_0"/>
<edgeData file="e1det_348320661#1_1-results-aggregated.xml" id="e1det_348320661#1_1"/>
<edgeData file="e1det_-143553082#1_0-results-aggregated.xml" id="e1det_-143553082#1_0"/>
<edgeData file="e1det_-143553082#1_1-results-aggregated.xml" id="e1det_-143553082#1_1"/>
<edgeData file="e1det_-348320661#1_0-results-aggregated.xml" id="e1det_-348320661#1_0"/>
<edgeData file="e1det_-348320661#1_1-results-aggregated.xml" id="e1det_-348320661#1_1"/>
<edgeData file="e1det_143553082#0_0-results-aggregated.xml" id="e1det_143553082#0_0"/>
<edgeData file="e1det_143553082#0_1-results-aggregated.xml" id="e1det_143553082#0_1"/>
<edgeData file="e1det_348320661#0_0-results-aggregated.xml" id="e1det_348320661#0_0"/>
<edgeData file="e1det_348320661#0_1-results-aggregated.xml" id="e1det_348320661#0_1"/>
</additional>
解决方案
这是一个正则表达式模式,它将任意匹配第 4 到第 6 行,包括一些输入:
(?:.*\n){3}(.*\n.*\n.*\n)
或者,也许在记事本++
(?:.*\R){3}(.*\R.*\R.*\R)
此模式在不捕获前三行的情况下使用,然后在捕获组中捕获接下来的 3 行。
演示
请注意,您通常不应使用正则表达式来解析 XML 内容。但是,就您而言,由于您只想提取整行,而不考虑嵌套标签,因此应该没有问题。
推荐阅读
- macos - 连接失败:本机主机已退出
- list - 将死海龟的数据保存到 CSV NetLogo
- r - Scrape multiple tables from Wikipedia in R
- jquery - Jquery循环为表单验证输出错误的错误信息
- java - angular 7 & spring boot 2 文件上传问题
- c++ - SDL 2.0 如何在一切之上生成纹理?
- internet-explorer - Angular 6 的 IE 浏览器中未显示 Favicon 图标
- mocking - 我如何在玩笑中替换虚假响应,然后在真实状态 vuex 中替换数据?
- git - How to use GitHub Desktop with AWS CodeCommit and AWS SSO profile?
- javascript - 是否可以在使用 setInterval() 函数更改的图像之间进行转换?