我是Regex的新手,正在尝试制作一个正则表达式来重命名文件。
例如,我有以下格式的字符串:
- SC_05/2020-这里有一个很长的标题
- SC_02/2021-简短标题
- SC_03/2021
我想让它像这样输出:
- SC_2020/05-这里有一个很长的标题
- SC_2021/02-简短标题
- SC_2021/03
到目前为止,我有这个来检测前两位
(d)*(d)
我也可以使用REGEX来翻转这两个吗??
更换
^SC_(d+)/(d+)
带有
SC_$2/$1
请参阅正则表达式证明。
解释
--------------------------------------------------------------------------------
^ the beginning of the string
--------------------------------------------------------------------------------
SC_ 'SC_'
--------------------------------------------------------------------------------
( group and capture to 1:
--------------------------------------------------------------------------------
d+ digits (0-9) (1 or more times (matching
the most amount possible))
--------------------------------------------------------------------------------
) end of 1
--------------------------------------------------------------------------------
/ '/'
--------------------------------------------------------------------------------
( group and capture to 2:
--------------------------------------------------------------------------------
d+ digits (0-9) (1 or more times (matching
the most amount possible))
--------------------------------------------------------------------------------
) end of 2
Regex进行匹配。当要以某种方式使用匹配的值时,可以执行反转顺序。因此:您的原始文件名可以匹配:
(SC_)(dd)(/)(dddd)(.*)
(SC_((2位((斜线((4位((任意(括号进行捕获,因此例如在记事本++中,您可以通过使用替换窗口并将上面的内容替换为:来反转顺序
$1$4$3$2$5
您可能会在其他上下文中使用regex,因此引用捕获的值会有所不同(例如\1\4\3\2\5(。使用((捕获值是正则表达式本身的一部分,因此它不会更改。