PowerShell RegEx有多个选项

时间:2018-06-18 22:27:08

标签: regex powershell

鉴于文件名为22-PLUMB-CLR-RECTANGULAR.0001.rfa,我需要一个RegEx来匹配它。那么基本上它是任何可能的角色。和4个数字以及四个可能的文件扩展名之一。 我试过^.?\.\d{4}\.(rvt|rfa|rte|rft)$,我原本认为这是正确的,但我想我的RegEx理解并没有像我想象的那样进步。现在,.?\.\d{4}\.(rvt|rfa|rte|rft)$确实有效,唯一的区别是我没有用^指定字符串的开头。在另一种情况下,文件名始终采用journal.####.txt格式,我使用了^journal\.\d{4}\.txt$,并且匹配journal.0001.txt就像一个冠军。显然,当我指定一个特定的字符串,而不是任何字符。?是差异,但我不明白为什么。

1 个答案:

答案 0 :(得分:1)

它永远不会匹配提到的字符串,因为^.?表示匹配输入字符串的开头,然后是一个可选的单个字符。然后它会查找一系列点和数字,并且没有任何内容。因为我们还没有通过第一个角色。

为什么没有^会有效?因为如果没有^,就可以通过所有字符查找匹配项,并在R之前停止并继续匹配到最后。

那很好但是第一种方法应该是^.*。 Kleene明星贪婪地匹配每一件事然后回溯,但?是这里的运算符,它使前面的模式可选。这意味着一个字符,而不是很多字符。