在 PowerShell 脚本中,我想检查本地是否已经存在分支,我目前正在执行
$existsInLocal = (git branch | sls $branch) -ne $null
操作,但这是不正确的,因为 sls $branch
匹配包含 $branch
作为子字符串的行,但是我需要的是 sls $branch
的版本,它输出与 $branch
完全匹配的行。
有没有办法使用
^
和 $
分别指示行的开头和结尾?我的尝试没有成功。
Select-String
文档,但没有找到解决方案。
还有一个几乎解决方案here,它使用
\b
,它匹配单词边界,但它不适用于我的情况,因为分支名称可以有\W
字符(例如/
或-
)
)。例如,\bjose/feature\b
将匹配 dev/jose/feature
(第一个 \b
匹配从 /
到 j
的过渡)或 jose/feature/v2
或 dev/jose/feature/v2
。
我知道还有另一种方法来检查本地分支是否存在,但我真的最感兴趣的是
sls
一般的精确匹配,而“确定本地分支是否存在”用例只是众多用例之一。
重写您的正则表达式可能就是您所需要的。以下适用于带有斜杠和破折号的随机字符串。
^[\/\-\w+]+$
一些解释:
[]+
定义要匹配的字符列表,可以重复一次或多次\/
匹配斜杠(需要转义)\-
匹配破折号(也需要转义)\w+
匹配一个或多个单词字符(您已经发现了)^
和 $
将匹配行的开头和结尾(同样,你已经发现了)因此列表中的内部捕获将匹配任何具有一个或多个单词字符、斜杠或破折号的字符串。如果您重复此操作一次或多次并包含行的开头和结尾,它将与您解释的模式匹配。