Шматрадковасць у рэгулярках JavaScript
Рэгуляркі пры працы з шматрадковымі радкамі маюць свае асаблівасці. Давайце з імі разбірацца на прыкладзе наступнага радка, які змяшчае звычайныя сімвалы, сімвалы перакладу радкоў і табуляцыі:
let str = `111
222
333
444`;
Пераклад радка
Сімвалы перакладу радка можна
злавіць з дапамогай каманды '\n':
let res = str.replace(/\n/g, '!');
У выніку ў зменную запішацца наступнае (прамежкі паміж радкамі - гэта табуляцыя):
`111! 222! 333! 444`;
Табуляцыя
Сімвалы табуляцыі можна
злавіць з дапамогай каманды '\t':
let res = str.replace(/\t/g, '!');
У выніку ў зменную запішацца наступнае:
`
111
!222
!333
!444
`;
Праца кропкі
Каманда '.' для шматрадковага
радка не ловіць сімвалы перакладу радкоў:
let res = str.replace(/./g, '!');
У выніку ў зменную запішацца наступнае:
`
!!!
!!!!
!!!!
!!!!
`;
Любы сімвал
Каб злавіць ўсе сімвалы ў шматрадковым
радку, выкарыстоўваецца хітры прыём у выглядзе
спалучэння [\s\S]. Такая канструкцыя знойдзе
ўсе звычайныя сімвалы і ўсе пераклады радкоў:
let res = str.replace(/[\s\S]/g, '!');
У выніку ў зменную запішацца наступнае:
`!!!!!!!!!!!!!!!!!!`;
Каўпачок
З дапамогай мадыфікатара 'm'
можна ўключыць шматрадковы рэжым.
У гэтым выпадку каўпачок будзе лавіць
пачатак кожнага радка:
let res = str.replace(/^/gm, '!');
У выніку ў зменную запішацца наступнае:
`
!111
!222
!333
!444
`;
Долар
Каманда '
у шматрадковым рэжыме
будзе лавіць канец кожнага радка:
let res = str.replace(/$/gm, '!');
У выніку ў зменную запішацца наступнае:
`
111!
222!
333!
444!
`;
Практычныя задачы
Дадзены радок:
`
abc
def
ghi
jkl
`;
Напішыце рэгулярку, якая зробіць з гэтага радка наступнае:
`
abc!
def!
ghi!
jkl!
`;
Дадзены радок:
`
abc
def
ghi
jkl
`;
Напішыце рэгулярку, якая зробіць з гэтага радка наступнае:
`
! abc
! def
! ghi
! jkl
`;
Дадзены радок:
`
abc
def
ghi
jkl
`;
Напішыце рэгулярку, якая зробіць з гэтага радка наступнае:
`!
abc
def
ghi
jkl
!`;
Дадзены радок:
`
abc
def
ghi
jkl
`;
Напішыце рэгулярку, якая зробіць з гэтага радка наступнае:
`!
! abc
! def
! ghi
! jkl
!`;
Дадзены радок:
`
abc
def
ghi
jkl
`;
Напішыце рэгулярку, якая зробіць з гэтага радка наступнае:
`!
abc!
def!
ghi!
jkl!
!`;
Дадзены радок:
`
abc
def
ghi
jkl
`;
Напішыце рэгулярку, якая зробіць з гэтага радка наступнае:
`
!abc
!def
!ghi
!jkl
`;