2016-01-06 2 views
1

У меня есть огромная строка с этой внутренней:Получить последнее вхождение с помощью RegEx

linha[0] = '12/2010 281R$   272.139,05       '; 
linha[0] = '13SL   1R$   226.185,81       '; 

Обе линии являются отдельными, и мне нужно получить последнее вхождение из обоих. Я использую следующее регулярное выражение, чтобы соответствовать первому один:

/linha\[0]\s=\s'(.*)';/ 

Я хотел бы получить второе «Linha ...», но я не знаю, как именно.

Вот как я использую это регулярное выражение, чтобы получить первый "Linha ...":

string.match(/linha\[0]\s=\s'(.*)';/); 

выход:

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

Кроме того, я не могу сделать дополнительную работу, я нужно получить второе вхождение, используя только регулярное выражение.

+2

Почему не 'hugeString.match (/ Linha \ [0] \ s = \ s'([^ '] *)';/g) .pop() '? Обратите внимание, что если вам нужно извлечь подгузник, вам нужно будет использовать [exec] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/exec) –

+3

Пожалуйста задайте вопрос еще двусмысленно, чтобы понять – amitguptageek

+1

так, какой ожидаемый результат? – Grundy

ответ

2

Если вы хотите, чтобы получить последнее вхождение вашего регулярного выражения в строке (и предполагая, что она существует), вы можете сделать

var str = hugeString.match(/linha\[0]\s=\s'([^']*)';/g).pop(); 

(да, я изменил .* к [^']* для лучшей эффективности, игнорировать это если у вас есть цитаты в вашей внутренней строки)

Теперь, если вы хотите извлечь только submatch, вы можете сделать

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

невозможно совместить второй только с использованием регулярного выражения без дополнительной работы? –

+1

@ FátimaAlves Вы можете использовать якорь '$' (предполагая, что он находится в конце строки) ... 'linha \ [0] \ s = \ s '(. *)'; $' - https: // regex101 .com/г/nF6aE0/1 –

Смежные вопросы