Использовать регулярное выражение для выбора строки за строкой вместо каждой строки сразу?

#regex

#регулярное выражение

Вопрос:

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

Прямо сейчас у меня работает это регулярное выражение:

 /[^]]*/W*
 

Преобразует это:

 /Users/jimmy/Music/iTunes/iTunes Media/Music/Godflesh/Streetcleaner/01 Like Rats.m4a
 

К этому:

 01 Like Rats.m4a
 

Тем не менее, я хочу это:

 #EXTM3U
#EXTINF:314,Hey Man Nice Shot - Filter
/Users/jimmy/Music/iTunes/iTunes Media/Music/Filter/Short Bus/01 Hey Man Nice Shot.mp3
#EXTINF:173,Biscuits For Smut - Helmet
/Users/jimmy/Music/iTunes/iTunes Media/Music/Helmet/Betty/03 Biscuits For Smut.mp3
#EXTINF:267,Like Rats - Godflesh
/Users/jimmy/Music/iTunes/iTunes Media/Music/Godflesh/Streetcleaner/01 Like Rats.m4a
 

Чтобы быть отфильтрованным, чтобы в итоге получилось так:

 #EXTM3U
#EXTINF:314,Hey Man Nice Shot - Filter
01 Hey Man Nice Shot.mp3
#EXTINF:173,Biscuits For Smut - Helmet
03 Biscuits For Smut.mp3
#EXTINF:267,Like Rats - Godflesh
01 Like Rats.m4a
 

Но с:

 /[^]]*/W*
 

В итоге я получаю это:

 #EXTM3U
#EXTINF:314,Hey Man Nice Shot - Filter
01 Like Rats.m4a
 

Как я могу изменить это регулярное выражение, чтобы не удалять все между косыми чертами во всем тексте сразу? Я просто хочу, чтобы это делалось построчно.

Вот оно в действии:

https://regex101.com/r/RhdWA5/13

Комментарии:

1. Ваша проблема в этой части : [^]]* . Это приводит к тому, что ваше регулярное выражение продолжает захватывать другие строки. Изменение на .* устраняет проблему, но тогда вам также нужно добавить глобальную опцию, чтобы она не возвращалась после первого совпадения. /.*/

Ответ №1:

Я обновил ваше регулярное выражение на:

 ^/[^n]*/
 

После замены ничем это не дает:

 #EXTM3U
#EXTINF:314,Hey Man Nice Shot - Filter
01 Hey Man Nice Shot.mp3
#EXTINF:173,Biscuits For Smut - Helmet
03 Biscuits For Smut.mp3
#EXTINF:267,Like Rats - Godflesh
01 Like Rats.m4a
 

демонстрация: https://regex101.com/r/RhdWA5/16

Комментарии:

1. Отлично, спасибо! Я не могу поддержать вас, я полагаю, потому что я слишком новичок на форуме.

2. @JammyTone: похоже, вы достигли этого! Спасибо 😉

Ответ №2:

Попробуйте это:

 /.*/
 

полное регулярное выражение должно быть таким, чтобы включить глобальную опцию:

 new regExp(//.*//ig)
 

и в итоге получается так:

 #EXTM3U
#EXTINF:314,Hey Man Nice Shot - Filter
01 Hey Man Nice Shot.mp3
#EXTINF:173,Biscuits For Smut - Helmet
03 Biscuits For Smut.mp3
#EXTINF:267,Like Rats - Godflesh
01 Like Rats.m4a
 

Я также привел это в качестве примера https://regex101.com/r/RhdWA5/17

Комментарии:

1. Я слишком новичок на форуме, чтобы поддержать вас, но, тем не менее, я хотел бы поблагодарить вас за помощь.

Ответ №3:

Это регулярное выражение должно решить проблему:

[^/] .[wd]

Он соответствует только именам файлов.

Рабочий пример: https://regex101.com/r/FobLOT/1

Комментарии:

1. Спасибо, но, похоже, это работает в обратном направлении для того, что мне было нужно. Это было решено другими, но я хочу поблагодарить вас за помощь!