#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
Как я могу изменить это регулярное выражение, чтобы не удалять все между косыми чертами во всем тексте сразу? Я просто хочу, чтобы это делалось построчно.
Вот оно в действии:
Комментарии:
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. Спасибо, но, похоже, это работает в обратном направлении для того, что мне было нужно. Это было решено другими, но я хочу поблагодарить вас за помощь!