首页 > 解决方案 > Powershell:从字符串中提取mediaid

问题描述

我想mediaid从字符串中提取

"\u003cimage mediaid=\"{2EB3AFF5-24C6-4C1F-8957-37CBFCBED751}\" alt=\"Caulfield to Dandenong Level Crossing Removal\" height=\"\" width=\"\" hspace=\"\" vspace=\"\" /\u003e",

如何做呢?

标签: powershellpowershell-2.0powershell-3.0powershell-4.0

解决方案


由于发布的问题中缺乏要求,可能需要某种正则表达式:

mediaid在这种情况下提取或在引用的 GUID 之前提取任何标识符名称,您可以执行以下操作:

$str = '"\u003cimage mediaid=\"{2EB3AFF5-24C6-4C1F-8957-37CBFCBED751}\" alt=\"Caulfield to Dandenong Level Crossing Removal\" height=\"\" width=\"\" hspace=\"\" vspace=\"\" /\u003e",'
$regex = [regex]'\S+(?==\\"{[-A-F0-9]+}\\")'
$regex.Match($str).Value

要提取 的值mediaid,您可以执行以下操作:

$str = '"\u003cimage mediaid=\"{2EB3AFF5-24C6-4C1F-8957-37CBFCBED751}\" alt=\"Caulfield to Dandenong Level Crossing Removal\" height=\"\" width=\"\" hspace=\"\" vspace=\"\" /\u003e",'
$regex = [regex]'(?<=mediaid=)\S+'
$regex.Match($str).Value

解释:

  • \S+: 匹配非空白字符一次或多次 ( +)
  • (?=<something>): 积极前瞻<something>但不捕捉角色
  • (?<=) : Positive lookbehind for ` 但不捕获
  • [A-F0-9-]:字符类匹配,包括大写到、零AF九和-(破折号)。请注意,这里强制使用大写,因为我们使用的是 .NET 类Regex。通常,Windows PowerShell 不区分大小写,无需另外指定,例如$str -match '[A-F]'匹配a-fA-F.

推荐阅读