拆分文件名 - 奇怪的行为

mig*_*llo 4 string powershell split

我正在尝试拆分文件名,例如 XXX_YYYY-YYYY_fff.xxx

如果我正在使用

'XXX_YYYY-UUUU_fff.xxx' -split '[-_`.]'
Run Code Online (Sandbox Code Playgroud)

一切正常,显示:

XXX
YYYY
UUUU
fff
xxx
Run Code Online (Sandbox Code Playgroud)

但是当我使用

'XXX_YYYY-UUUU_fff.xxx' -split '[_-`.]'
Run Code Online (Sandbox Code Playgroud)

它不会在破折号上拆分:

XXX
YYYY-UUUU
fff
xxx
Run Code Online (Sandbox Code Playgroud)

任何人都可以解释为什么?

Bil*_*art 5

-指定正则表达式中的字符范围。为了得到你想要的,“逃避”-\; 例如:

C:\> 'XXX_YYYY-UUUU_fff.xxx' -split '[_\-.]'
XXX
YYYY
UUUU
fff
xxx
Run Code Online (Sandbox Code Playgroud)

即,使用以下任何字符拆分字符串:_, -, 或.

你也可以告诉正则表达式解析器 the-是集合中的一个文字字符,方法是将它放在集合的开头,就在集合的后面[或集合的末尾,方法是将它放在 之前],如下所示:

[-_.]
Run Code Online (Sandbox Code Playgroud)

或者

[_.-]
Run Code Online (Sandbox Code Playgroud)