Как вернуть все в абзаце, кроме первого предложения, используя регулярные выражения? - PullRequest
1 голос
/ 17 апреля 2020

Если у меня есть следующий абзац:

The red fox. The blue fish. The pink dog.

Как мне вернуть все, кроме первого предложения?

The blue fish. The pink dog.  // what I'm looking for

Поскольку я использую ^([^.]+(. )) для захвата первого предложения (включая точку и следующие пробелы), я надеялся использовать его как способ пропустить его, но мне не повезло.

Ответы [ 3 ]

1 голос
/ 17 апреля 2020

Вы можете попробовать использовать этот шаблон:

^([\w\s]+\.\s)(.+)$

За исключением первого предложения с точкой, мы получаем все из следующего.

var pattern = /^([\w\s]+\.\s)(.+)$/;

var arr = 'The red fox. The blue fish. The pink dog.'.match(pattern);

console.log(arr);
console.log(arr[2]);
0 голосов
/ 17 апреля 2020

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

Вы можете использовать регулярное выражение

^(?<![^\r\n]\r?\n)[A-Z][^.]*\.\s*

, преобразовывающее совпадения (первые предложения абзацев) в пустые строки .

Демонстрация

* Механизм регулярных выражений 1014 * выполняет следующие операции.

^          # match the beginning of a line
(?<!       # begin a negative lookbehind (to ensure the current
           # line is the first line of a paragraph.
  [^\r\n]  # match any char other than \r and \n
  \r?\n    # match \n optionally be preceded by \r 
)          # end negative lookbehind
[A-Z]      # match a capital letter
[^.]*      # match 0+ chars other periods
\.         # match a period
\s*        # match 0+ spaces
0 голосов
/ 17 апреля 2020

Я использовал split и splice, чтобы решить ту же проблему. Вы можете проверить это решение.

const removeFirstSentence = (text) => {
  const lines = text.split('.');
  lines.splice(0, 1);
  return lines.join('.').trim();
}

let lines = "The red fox. The blue fish. The pink dog."
lines = removeFirstSentence(lines);
console.log(lines);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...