【发布时间】:2020-08-21 11:28:12
【问题描述】:
我正在尝试捕获和替换文件名,例如 000035 ZSMS_1.mp3 还有一个像 000035 1OMNA (我基本上是在尝试重新排序它们,使它们看起来像 ZSMS_1(000035).mp3)。 我试过了
^(\d+) (.*)(\..*$)?
^(\d+) (.*?)(\..*$)?
我期望发生的事情: 000035 ZSMS_1.mp3:
[
{
"groups": [
"000035",
"ZSMS_1",
".mp3"
],
"match": "000035 ZSMS_1.mp3"
}
]
000035 1OMNA:
[
{
"groups": [
"000035",
"1OMNA",
""
],
"match": "000035 1OMNA"
}
]
会发生什么: 1.
^(\d+) (.*)(\..*$)?
000035 ZSMS_1.mp3:
[
{
"groups": [
"000035",
"ZSMS_1.mp3",
""
],
"match": "000035 ZSMS_1.mp3"
}
]
000035 1OMNA:
[
{
"groups": [
"000035",
"1OMNA",
""
],
"match": "000035 1OMNA"
}
]
^(\d+) (.*?)(\..*$)?
000035 ZSMS_1.mp3:
[
{
"groups": [
"000035",
"",
""
],
"match": "000035 "
}
]
000035 1OMNA:
[
{
"groups": [
"000035",
"",
""
],
"match": "000035 "
}
]
【问题讨论】:
-
第二种模式适用于您的示例数据。您需要
$2($1)$3替换。 regex101.com/r/ynJ0ow/1 -
糟糕,原来是错字,实际的模式是^(\d+) (.*?)(\..*$)?但是将 $ 放在最后确实可以很好地工作。谢谢,没想到这样做。 :)
-
如果字符串包含多个点,只需将
$放在^(\d+) (.*?)(\..*$)?might not do what you need 的末尾即可。我的解决方案will cope with that. -
@Wiktor Stribiżew 哇,你是对的。感谢您的警告。
标签: regex pcre regex-group regex-greedy