我匹配字符串:
"this transaction will cost $600" -match "\`$ \d{1,3}"
我希望matches[0]
仅匹配值和$
符号子字符串:
$600
我错过了什么?
答案 0 :(得分:1)
不是我猜的最佳方式
$string = 'this transaction will cost $600'
$string -match 'will cost \$(?<content>.*)'
"In `$: $($matches['content'])"
答案 1 :(得分:1)
这里有两个问题。首先是输入字符串。你有一个美元符号,然后是字母数字。 PowerShell将尝试使用变量$600
扩展该字符串。据推测,这不存在,并且在您的情况下,将返回null。输入字符串以查看我的意思。
PS C:\Users\stuff> "this transaction will cost $600"
this transaction will cost
其次,你的正则表达式中的美元之后有空格。这将尝试匹配你没有的“600美元”。需要收紧。
PS C:\Users\stuff> 'this transaction will cost $600' -match "\$\d{1,3}"
True
PS C:\Users\stuff> $Matches[0]
$600
在这种情况下,正则表达式中的美元符号不需要被转义,但是使用单引号可以防止出现错误。如果你真的想要变量扩展那么要小心。您需要使用双引号或使用格式运算符之类的东西。