在PowerShell中使用正则表达式匹配子字符串

时间:2016-07-20 21:29:20

标签: regex powershell

正则表达式真的不是我的强项,我正在努力学习。目前正在努力解决这个问题。

<fraglink id="230681395" resid="1057000484">

我有一个包含大量文本的文件,并且不时出现如上所示的位。我想在resid=之后的引号之间得到数字。

这里需要某种先行/后退吗?

3 个答案:

答案 0 :(得分:2)

看起来你想要一个正则表达式:

resid="([0-9]+)"

抓住$1

答案 1 :(得分:1)

由于您的内容看起来像XML,因此您应该不要使用正则表达式来获取所需的值。如果您共享整个文件,我们将向您展示如何使用XPath正确选择值。

但是,如果您想将正则表达式用于培训目的,请尝试以下方法:

$content = Get-Content 'your_file_path' -raw
[regex]::Match($content, '\bresid="([^"]+)').Groups[1].Value

答案 2 :(得分:0)

使用前瞻((?<=pattern)),您的模式可能如下所示:

(?<=resid=")\d+

使用Regex.Match()

$id = [regex]::Match($inputString,'(?<=resid=")\d+').Value