Regex для соответствия предложения, заканчивающегося пунктуацией, без удаления разделителя и присоединения тега <p> - PullRequest
0 голосов
/ 28 сентября 2019

Мне нужно сопоставить все предложения, заканчивающиеся пунктуацией в текстовом файле, передаваемом на html-страницу с помощью ajax в формате json, сохраняя разделитель и присоединяя тег <p> к каждому предложению.

Текущий код выглядит следующим образом:

var xhr = new XMLHttpRequest();

xhr.onload = function() {
  if(xhr.status === 200) {
    responseObject = JSON.parse(xhr.responseText);

    var newContent = '';

    // text file html encasing
    newContent += '<p>' + responseObject.content + '</p>';

    // regex
    matchedPunctuation = newContent.match(/.*?[?!.]/g);

    // add element
    document.getElementById('myptag').innerHTML = matchedPunctuation.join('<p>');


  }
};

xhr.open('GET', 'http://127.0.0.1:5000/jsonstory', true);
xhr.send(null);

Это не получается, когда у меня есть следующее предложение:

Краткий текстовый файл ПРИМЕР ....... Этохороший день на улице.Дейв сказал: «Да, это так».

Приведенный выше код будет правильно добавлять теги <p> к первому предложению, что будет непосредственно после периода, но до начала следующего предложения.

Второе предложение добавляет их между точкой и кавычкой .<p></p> "<p></p>, что ставит кавычку в отдельной строке от предложения, с которым она должна оставаться в моем html-файле.Любые идеи или решения будут оценены! Спасибо.

1 Ответ

0 голосов
/ 28 сентября 2019

Попробуйте это регулярное выражение .*?[?!.]"? "? делает это необязательным требованием, если двойная кавычка есть или нет.Если это так, он сначала использует его для матча, если нет, он просто продолжает.

Надеюсь, это поможет.

var xhr = new XMLHttpRequest();

xhr.onload = function() {
  if(xhr.status === 200) {
    responseObject = JSON.parse(xhr.responseText);

    var newContent = '';

    // text file html encasing
    newContent += '<p>' + responseObject.content + '</p>';

    // regex
    matchedPunctuation = newContent.match(/.*?[?!.]"?/g);

    // add element
    document.getElementById('myptag').innerHTML = matchedPunctuation.join('<p>');


  }
};

xhr.open('GET', 'http://127.0.0.1:5000/jsonstory', true);
xhr.send(null);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...