我需要的是此语句的正则表达式等效项:
匹配“艺术家-专辑(年)(曲目),但前提是空格后有两位数字。
我不知道该如何/是否可以做到。我为此工作了很长时间,如果我错过了一些简单的事情,很抱歉,但是我确实在寻求帮助之前试图找到答案。这就是我取得的成就,作为非编码者,这可能是基本的事情。
这是我的情况以及我尝试过的操作:
"Artist - Album (Year) (Track 01).mp3"
"Artist - Album (Year) (Track 2).mp3"
...
"Artist - Album (Year) (Track 10).mp3"
匹配:
".*\(track
替换:
track
这是它的作用:
track01).mp3"
track2).mp3"
...
track10).mp3"
基本上,它匹配所有以打开引号开头(包括(Track space )。)对此非常有用。请注意,在我需要保留的打开引号之前,可能有一些重要的东西。第一个引号对于比赛的开始很重要。
但是,如果我替换为 track ,则对于比赛后没有2位数字的任何行,我都会留下 track#。它们全部需要2位数字(track08,track09,track10等)。因此,我需要一种匹配“艺术家-专辑(年份)(曲目)的方法,但前提是空格后面必须有2位数字。这样,它将忽略不符合该条件的行,我可以在下一步中将其替换为 track0 ,但将空格后的位数指定为1。
我不想做的就是丢掉那些数字。我只能够匹配包含2位数字的行,但它也匹配那些2位数字并替换它们。那行不通,我需要他们!
这就是我想要的(我不介意逐步完成):
track01.mp3
track02.mp3
...
track10.mp3
请注意,我是业余爱好者。我不知道什么是肯定的超前断言,或者用什么行话来解释解决方案。请原谅我的无知,我正在尝试。
答案 0 :(得分:1)
如果您选择分两次进行,则可以这样做。
通过1:
找到(?i)".*?Track[ \t]*(\d)(?!\d).*?(\.\w+).*?"
替换Track0$1$2
https://regex101.com/r/pLCog5/1
第二遍:
找到(?i)".*?Track[ \t]*(\d\d)(?!\d).*?(\.\w+).*?"
替换Track$1$2
答案 1 :(得分:0)
答案 2 :(得分:0)
大声笑...我提到我不知道什么是积极的前瞻性断言之后,我抬起头,发现这是我所需要的。我尝试添加(?=\d{2})
并对其进行一些尝试以获得一些有用的东西。它说,在询问...墨菲定律后偶然发现了一个解决方案。
".*track.(?=\d{2})
有用,但是由于我的建议,我发现.*track\s+(?=\d{2})
更好,因为它捕获了多个空格字符。
感谢您的快速,非判断性的反馈。