Многострочное сопоставление регулярных выражений, ошибка в отрицательном виде (ЗАКРЫТО)

1

У меня есть markdown как markdown ниже:

# Heading!
* unorder list!
1. ordered list
*no it not list
2.just normal text

''' 
block 
code 
python
'''

#goodbye

И я хочу, чтобы regex разделил его на 3 part, первый и последний - обычный текст, второй - кодовый блок

Как это (некоторые новые строки удаляются с помощью stackoverflow):

Первый:

# Heading!
* unorder list!
1. ordered list
*no it not list
2.just normal text

Блок кода:

'''
block
code
python
'''

Прошлой:

#goodbye

я использовал

/^'''(.|\n)+'''$|^(.|\n)+(?!')$/gm

в javascript но не работает. Не удается получить блок кода.

У кого-нибудь есть идеи?

  • 1
    Попробуйте s.split(/^(`{3}[^]*?^`{3})/m)
  • 0
    @ WiktorStribiżew Удивительно! Не могли бы вы опубликовать ответ для принятия?
Показать ещё 3 комментария
Теги:

3 ответа

1
Лучший ответ

Вы можете использовать регулярное выражение для соответствия трем backticks в начале строки, а затем любые символы, как можно меньше, до первой строки, которая начинается с 3 обратных ссылок, и обертывания всего шаблона группой захвата для использования в split поэтому что согласованная часть также попала в результирующий массив:

s.split(/^('{3}[^]*?^'{3})/m)

Шаблон соответствует:

  • ^ - начало строки
  • '{3} - 3 backticks
  • [^]*? - любые 0+ символы, как можно меньше
  • ^ - начало строки
  • '{3} - 3 обратных цикла.

JS demo:

const regex = /^('{3}[^]*?^'{3})/m;
const str = '# Heading!
* unorder list!
1. ordered list
*no it not list
2.just normal text

\'\'\' 
block 
code 
python
\'\'\'

#goodbye';
console.log(str.split(regex));
0

Почему бы не разделиться на ""?

var str = '# Heading!
* unorder list!
1. ordered list
*no it not list
2.just normal text

\'\'\' 
block 
code 
python
\'\'\'

#goodbye';

out = str.split(''''');
console.log(out);
0

С помощью опции 'm' ваше регулярное выражение выполняется по строкам. Вам нужно будет протестировать один квест и управлять разрывами строк.

Например: (?:\s|\S)([\s\S]+.*)

См. Https://regex101.com/r/Re23vd/1

Ещё вопросы

Сообщество Overcoder
Наверх
Меню