正则表达式完全符合我的要求,但我希望能够只检查字符串的开头而不要查看其后的内容。
工作正则表达式:
[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
感谢您的帮助。
答案 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 +)'。