Положительный взгляд в регулярном выражении JavaScript
У меня есть документ, из которого мне нужно извлечь некоторые данные. Документ содержит строки, подобные этим
Text:"How secure is my information?"
Мне нужно извлечь текст, который находится в двойных кавычках после буквального Text:
How secure is my information?
Как это сделать с помощью регулярного выражения в Javascript
Ответы
Ответ 1
Регулярные выражения JavaScript не поддерживают lookbehinds. Вместо этого вы должны использовать скобки для записи:
var str = 'Text:"How secure is my information?"',
reg = /Text:"([^"]+)"/;
alert(str.match(reg)[1]);
// -> How secure is my information?
Ответ 2
Я просто хочу добавить что-то: JavaScript не поддерживает lookbehind как (?<= )
или (?<! )
.
Но он делает поддержку lookaheads, например (?= )
или (?! )
.
Ответ 3
Вы можете просто сделать:
/Text:"(.*?)"/
Пояснение:
-
Text:"
: для соответствия буквально
-
.*?
: Чтобы соответствовать чему-либо в
нежелательный способ
-
()
: Чтобы зафиксировать совпадение
-
"
: для соответствия литералу "
-
/ /
: разделители
Ответ 4
string.match(/Text:"([^"]*)"/g)
Ответ 5
<script type="text/javascript">
var str = 'Text:"How secure is my information?"';
var obj = eval('({'+str+'})')
console.log(obj.Text);
</script>
Ответ 6
Если вы хотите избежать регулярного выражения все вместе, вы можете сделать:
var texts = file.split('Text:"').slice(1).map(function (text) {
return text.slice(0, text.lastIndexOf('"'));
});
Ответ 7
Вот пример, показывающий, как вы можете это сделать.
1) С учетом этой входной строки:
const inputText =
`Text:"How secure is my information?"someRandomTextHere
Voice:"Not very much"
Text:"How to improve this?"
Voice:"Don't use '123456' for your password"
Text:"OK just like in the "Hackers" movie."`;
2) Извлеките данные в двойные кавычки после литерала Text:
, чтобы результаты были массивом со всеми подобными совпадениями:
["How secure is my information?",
"How to improve this?",
"OK just like in the \"Hackers\" movie."]
Решение
function getText(text) {
return text
.match(/Text:".*"/g)
.map(item => item.match(/^Text:"(.*)"/)[1]);
}
console.log(JSON.stringify( getText(inputText) ));
RUN SNIPPET СМОТРЕТЬ РАБОЧИЙ ДЕМО
const inputText =
`Text:"How secure is my information?"someRandomTextHere
Voice:"Not very much"
Text:"How to improve this?"
Voice:"Don't use '123456' for your password"
Text:"OK just like in the "Hackers" movie."`;
function getText(text) {
return text
.match(/Text:".*"/g)
.map(item => item.match(/^Text:"(.*)"/)[1]);
}
console.log(JSON.stringify( getText(inputText) ));