Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用正则表达式获取最后一次出现_Javascript_Regex - Fatal编程技术网

Javascript 使用正则表达式获取最后一次出现

Javascript 使用正则表达式获取最后一次出现,javascript,regex,Javascript,Regex,我有一根巨大的绳子,里面有这个: linha[0] = '12/2010 281R$ 272.139,05 '; linha[0] = '13SL 1R$ 226.185,81 '; 这两行是分开的,我需要从这两行中获取最后一个匹配项。我使用以下正则表达式来匹配第一个正则表达式: /linha\[0]\s=\s'(.*)';/

我有一根巨大的绳子,里面有这个:

linha[0] = '12/2010    281R$          272.139,05                            ';
linha[0] = '13SL         1R$          226.185,81                            ';
这两行是分开的,我需要从这两行中获取最后一个匹配项。我使用以下正则表达式来匹配第一个正则表达式:

/linha\[0]\s=\s'(.*)';/
我也想得到第二个“linha…”,但我不知道具体怎么做

这就是我如何使用这个正则表达式来获得第一个“linha…”:

输出:

linha[0] = '12/2010    281R$          272.139,05                            ';

另外,我不能做额外的工作,我只需要使用正则表达式获取第二个匹配项。

如果您想获取字符串中正则表达式的最后一个匹配项(假设它存在),您可以这样做

var str = hugeString.match(/linha\[0]\s=\s'([^']*)';/g).pop();
var regex = /linha\[0]\s=\s'([^']*)';/g,
    arr,
    str;
while (arr = regex.exec(hugeString)) str = arr[1];
(是的,我将
*
更改为
[^']*
,为了提高效率,如果您的内部字符串中有引号,请忽略这一点)

现在,如果您只想提取子匹配,您可以这样做

var str = hugeString.match(/linha\[0]\s=\s'([^']*)';/g).pop();
var regex = /linha\[0]\s=\s'([^']*)';/g,
    arr,
    str;
while (arr = regex.exec(hugeString)) str = arr[1];

为什么不
hugeString.match(/linha\[0]\s=\s'([^']*)”;/g.pop()
?请注意,如果您需要提取子模板,则必须使用请指定问题,但理解起来并不明确。那么,预期的输出是什么?第二个输出是什么意思?对不起,问题不清楚。请稍等。不可能只使用正则表达式而不进行额外的工作来匹配第二个吗?@FátimaAlves您可以使用
$
锚定(假设它位于字符串末尾)<代码>linha\[0]\s=\s'(.*)$-