【问题标题】:Splitting filename - weird behavior拆分文件名 - 奇怪的行为
【发布时间】:2021-05-02 20:55:52
【问题描述】:

我正在尝试拆分 XXX_YYYY-YYYY_fff.xxx 之类的文件名

如果我正在使用

'XXX_YYYY-UUUU_fff.xxx' -split '[-_`.]'

一切正常,显示:

XXX
YYYY
UUUU
fff
xxx

但是当我使用时

'XXX_YYYY-UUUU_fff.xxx' -split '[_-`.]'

它不会在破折号上分割:

XXX
YYYY-UUUU
fff
xxx

谁能解释一下原因?

【问题讨论】:

    标签: string powershell split


    【解决方案1】:

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

    C:\> 'XXX_YYYY-UUUU_fff.xxx' -split '[_\-.]'
    XXX
    YYYY
    UUUU
    fff
    xxx
    

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

    您还可以告诉正则表达式解析器 - 是集合中的文字字符,方法是将它放在集合的开头,紧跟在 [ 之后,或者放在集合的末尾,放在前面],如:

    [-_.]
    

    [_.-]
    

    【讨论】:

    • 或移动-,使其成为方括号内的第一个字符。
    • 正确;将- 作为集合中[ 之后的第一个字符或] 之前的最后一个字符会导致正则表达式解析器不将其解释为范围说明符。
    • 没错——这就是为什么它在一种情况下有效而在另一种情况下无效
    猜你喜欢
    • 2014-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-18
    相关资源
    最近更新 更多