Powershell中正则表达式的等效于\ K是多少?

时间:2017-10-06 18:08:08

标签: regex powershell regex-lookarounds

我在regex101上创建了一个正常表达式,它按预期工作,但问题是一个部分在Powershell中显然无效; \K

基本上我正在查找字符串的实例,并在字符串的实例之后返回整个单词。所以这是一个例子:

\btest\s+\K\S+

这会查找单词test的每个示例,并在其后面返回单词。我确实尝试过使用Lookaheads和Lookbehinds进行实验,虽然其中一些确实有用,但他们仍然要么返回test或其他不必要的字符。

有没有办法在powershell中复制\K?或者甚至更好,任何允许PowerShell使用\K的附加组件?

1 个答案:

答案 0 :(得分:7)

What about something like this: (?<=\btest\b)\s+(\w+)\S+

test的正面观察,其次是您正在寻找的其他内容,以及后续单词的捕获组。

PowerShell使用.Net RegEx引擎和it doesn't support \K as you know it(它用于引用.Net中的命名捕获组)。你不能改变它。

你可能会使用与.Net兼容的正则表达式的第三方实现,但似乎不太可能存在这样的事情,因为一般来说.Net有一个非常好的和功能齐全的引擎。