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

Исходная строка:

'First #13#10'#13#10'Second'#13#10#13#10'Third''s'

Ожидаемые результаты:

First #13#10
Second
Third''s

В общем, нужно извлечь все, что находится между '. Таких совпадений может быть куча, и все они разделены как минимум одной строкой #13#10.


Ответы (2 шт):

Автор решения: Dmitry Sokolov

Regexp: '((?:''|[^'])+)', проверить можно на https://regex101.com/r/vyZBHY/1

# Пример на Python

import re

print(re.findall(r"'((?:''|[^'])+)'", r"'First #13#10'#13#10'Second'#13#10#13#10'Third''s'"))

# output: ['First #13#10', 'Second', "Third''s"]

Update

Для IDE/редакторов, regexp: (?<=')(?:''|[^'])+(?='(?:#13#10|$)) - https://regex101.com/r/ZEML54/1.

введите сюда описание изображения

Только они должны поддерживать lookahead / lookbehind regexp.

→ Ссылка
Автор решения: PotroNik

const regex = /'([^']+(?:[']{2}[^']+)?)'/gm;
const str = `'First #13#10'#13#10'Second'#13#10#13#10'Third''s'`;
let m;

found = str.match(regex);
console.log(found);

На примере JavaScript: '([^']+(?:[']{2}[^']+)?)'
Берем символ одинарной кавычки', после него выбираем один и более символов кроме кавычки[^']+, создfем необязательную группу (?:[']{2}[^']+)? где указываем что могут встретится две одинарные кавычки и после них идет один и более символов не равных символу кавычки/


Sublime у меня не установлен, но есть notepad++ Для изменения необходимых строк можно попробовать(Важно что сначала нужно протестировать) [^']*?'([^']+(?:[']{2}[^']+)?)' шаблон с заменой на первую группу $1 введите сюда описание изображения Т.е. в поле найти вставляем шаблон [^']*?'([^']+(?:[']{2}[^']+)?)', в поле заменить вставляем $1\n захваченную строку + переход на новую строку, должна быть включена поддержка regexp.

→ Ссылка