PowerShell正则表达式匹配字符串的开头

时间:2014-08-11 10:03:18

标签: regex powershell

正则表达式完全符合我的要求,但我希望能够只检查字符串的开头而不要查看其后的内容。

工作正则表达式:

[RegEx]$RegEx = "(.+?) (.+?)-(.+?)-(.+?)$"

尝试失败:

[RegEx]$RegEx = "^((.+?) (.+?)-(.+?)-(.+?))"
[RegEx]$RegEx = "\A(.+?) (.+?)-(.+?)-(.+?)"

示例:

# Ok:
BEL Green-Fruit-Appel Stuff
BEL Green-Fruit-Appel Other stuff stuff

# Not ok (without anything):
BEL Green-Fruit-Appel            

More info here

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

抛弃$并使用^

C:\PS> 'BEL Green-Fruit-Appel' -match '^(.+?) (.+?)-(.+?)-(.+?)'
True

C:\PS> $matches
Name                           Value
----                           -----
4                              A
3                              Fruit
2                              Green
1                              BEL
0                              BEL Green-Fruit-A

最后一个捕获组只是A因为你使用的是非贪婪的?所以它在第一个字符后停止。如果您想要整个单词,请将最后一个捕获组更改为“ - (\ w +)'。