Как построить регулярное выражение?
Исходная строка:
'First #13#10'#13#10'Second'#13#10#13#10'Third''s'
Ожидаемые результаты:
First #13#10
Second
Third''s
В общем, нужно извлечь все, что находится между '. Таких совпадений может быть куча, и все они разделены как минимум одной строкой #13#10.
Ответы (2 шт):
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.
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.
