Подтвердить что ты не робот

Положительный взгляд в регулярном выражении JavaScript

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

Text:"How secure is my information?"

Мне нужно извлечь текст, который находится в двойных кавычках после буквального Text:

How secure is my information?

Как это сделать с помощью регулярного выражения в Javascript

4b9b3361

Ответ 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)    ));