0

この行からユーザー情報を抽出する必要があります

"user/data ^`ms\john ^`Lorem Ipsum Lorem ^`Lorem Ipsum Lorem"

パターンは、情報が常に"user/data ^「と"^」の間にあるというものです。

期待される結果は「ms\john」です

これは私の試みです、

$line = "user/data ^`ms\john ^`Lorem Ipsum Lorem ^`Lorem Ipsum Lorem"
if ($line -match "user/data(.*)")
{
    write-host "found: $($matches[1])"
} else {
    Write-Host "no found"
}

正規表現に特殊文字を追加して「ms\john」を抽出する方法がわかりません。

コメントは大歓迎です。

4

3 に答える 3

2

これを試すこともできます:

$line = "user/data ^`ms\john ^`Lorem Ipsum Lorem ^`Lorem Ipsum Lorem"
if ($line -match "user/data\s+\^`?([^\^]+)")
{
    write-host "found: $($matches[1])"
} else {
    Write-Host "no found"
}
于 2012-12-23T22:20:27.243 に答える
1

さらに2つのオプション:

PS> $il = "user/data ^`ms\john ^`Lorem Ipsum Lorem ^`Lorem Ipsum Lorem"

PS> $il -replace '^user/data\ \^`([^\^]+)\ \^.+$','$1'
ms\john

PS> [regex]::Matches($il,'user/data\s\^`([^\^]+)\s\^').Groups[1].Value
ms\john
于 2012-12-24T07:12:28.420 に答える
1

これを試して:

$line = "user/data ^`ms\john ^`Lorem Ipsum Lorem ^`Lorem Ipsum Lorem"
if ($line -match "(?<=\^)(.[^\^]*)")
{
    write-host "found: $($matches[1])"
} else {
    Write-Host "no found"
}
于 2012-12-23T20:56:40.260 に答える