GeraLinha('1', ' 860,96 ', 1'18/11/2010', '0237.02912.1999.0022512 ');
GeraLinha('1', ' 1.858,60 ', '17/11/2010', '0237.02911.1999.0033109 ');
GeraLinha('1', ' 397,76 ', '17/11/2010', '0237.02911.1999.0032989 ');
GeraLinha('1', ' 300,62 ', '17/11/2010', '0237.02911.1999.0032898 ');
GeraLinha('1', ' 915,95 ', '12/11/2010', '0422.02896.1999.0000277 ');
GeraLinha('1', ' 549,30 ', '18/11/2010', '0237.02912.1999.0059833 ');
GeraLinha('1', ' 861,88 ', '24/11/2010', '0237.02916.1999.0000134 ');
GeraLinha('1', ' 936,62 ', '19/11/2010', '0356.02703.1999.0072998 ');
GeraLinha('1', ' 384,15 ', '18/11/2010', '0033.02907.1999.0004992 ');
GeraLinha('1', ' 958,82 ', '17/11/2010', '0237.02911.1999.0032926 ');
GeraLinha('1', ' 766,86 ', '22/11/2010', '0341.02922.1999.0000166 ');
GeraLinha('1', ' 300,26 ', '17/11/2010', '0237.02911.1999.0033505 ');
我使用以下正则表达式来匹配该组,但我只想要第六行。是否可以在正则表达式中定义"我想要第六场比赛"?如果根本不可能,有没有其他方法可以达到预期的结果?
http://regexr.com/3cas9
正如你在这里看到的,我正在匹配所有。
/GeraLinha((.*));/g
您可以匹配 5 行,从 GeraLinha(
开始,然后匹配并捕获第 6 行:
(?:GeraLinha(.*r?n){5}(GeraLinha(.*)
查看正则表达式演示
在这里,由于{5}
限制量词,(?:GeraLinha(.*r?n){5}
子形态匹配 5 条线。然后,我们只需匹配并捕获下一行,即第 6 行。
var re = /(?:GeraLinha.*r?n){5}(GeraLinha.*)/;
var str = 'GeraLinha('1', ' 860,96 ', 1'18/11/2010', '0237.02912.1999.0022512 ');nGeraLinha('1', ' 1.858,60 ', '17/11/2010', '0237.02911.1999.0033109 ');nGeraLinha('1', ' 397,76 ', '17/11/2010', '0237.02911.1999.0032989 ');nGeraLinha('1', ' 300,62 ', '17/11/2010', '0237.02911.1999.0032898 ');nGeraLinha('1', ' 915,95 ', '12/11/2010', '0422.02896.1999.0000277 ');nGeraLinha('1', ' 549,30 ', '18/11/2010', '0237.02912.1999.0059833 ');nGeraLinha('1', ' 861,88 ', '24/11/2010', '0237.02916.1999.0000134 ');nGeraLinha('1', ' 936,62 ', '19/11/2010', '0356.02703.1999.0072998 ');nGeraLinha('1', ' 384,15 ', '18/11/2010', '0033.02907.1999.0004992 ');nGeraLinha('1', ' 958,82 ', '17/11/2010', '0237.02911.1999.0032926 ');nGeraLinha('1', ' 766,86 ', '22/11/2010', '0341.02922.1999.0000166 ');nGeraLinha('1', ' 300,26 ', '17/11/2010', '0237.02911.1999.0033505 ');';
var m = str.match(re);
if (m !== null) {
document.write(m[1]);
}
如果你可以考虑一种几乎非正则表达式的方法,你可以拆分行,只得到索引 5 的行(我正在使用/r?n+/
正则表达式来匹配换行符以支持 Unix 和 Windows 操作系统换行符样式(:
var str = 'GeraLinha('1', ' 860,96 ', 1'18/11/2010', '0237.02912.1999.0022512 ');nGeraLinha('1', ' 1.858,60 ', '17/11/2010', '0237.02911.1999.0033109 ');nGeraLinha('1', ' 397,76 ', '17/11/2010', '0237.02911.1999.0032989 ');nGeraLinha('1', ' 300,62 ', '17/11/2010', '0237.02911.1999.0032898 ');nGeraLinha('1', ' 915,95 ', '12/11/2010', '0422.02896.1999.0000277 ');nGeraLinha('1', ' 549,30 ', '18/11/2010', '0237.02912.1999.0059833 ');nGeraLinha('1', ' 861,88 ', '24/11/2010', '0237.02916.1999.0000134 ');nGeraLinha('1', ' 936,62 ', '19/11/2010', '0356.02703.1999.0072998 ');nGeraLinha('1', ' 384,15 ', '18/11/2010', '0033.02907.1999.0004992 ');nGeraLinha('1', ' 958,82 ', '17/11/2010', '0237.02911.1999.0032926 ');nGeraLinha('1', ' 766,86 ', '22/11/2010', '0341.02922.1999.0000166 ');nGeraLinha('1', ' 300,26 ', '17/11/2010', '0237.02911.1999.0033505 ');';
var lines = str.split(/r?n+/);
if (lines !== null && lines.length>5) {
document.write(lines[5]);
}
只需一次匹配所有 6 行即可。
第 6 行内容(使用正则表达式(位于捕获组 1 中。
这是有效的,因为量化组的每次迭代{6}
捕获缓冲区 1 将被覆盖,仅保留第 6 行数据。
对于连续线:
text.match(/(?:^GeraLinha((.*));s*){6}/m);
对于非连续线:
text.match(/(?:^GeraLinha((.*));s*(?:(?!^GeraLinha(.*);s*)^.*s*)*){6}/m);
格式 化:
(?:
^ GeraLinha(
( .* ) # (1)
); s*
(?:
(?! ^ GeraLinha( .* ); s* )
^ .* s*
)*
){6}