簡體   English   中英

Powershell正則表達式如何工作?

[英]How does this Powershell Regex work?

'<Relation From="701047080" ObjectNumber="166543300" Output="77" To="464616324">' -match '(?<=Output=")[^"]*'

$matchs然后包含77?

這就是我想要的,我只是不明白為什么它有效?

我找到的東西說我可以:

match '(?<NAME>Some regex)'

但我不知道'(?<='是什么?我真的很想理解語法......

我實際上需要提取Output和To兩者的值...並且只需要在系統上使用powershell我需要這樣做......

表達式(?<=Output=")是一個lookbehind 。它只在字符串Output="之后立即匹配。

表達式[^"]*是一個否定的字符類 。它匹配所有字符,直到下一個雙引號(如果沒有雙引號,則匹配字符串的結尾)。

[^"]*表示除"之外的任何數量的字符。

[^"]*是主要表達方式。

(?<=Output=")是一個lookbehind,並確保主表達式跟隨lookbehind中的表達式,在這種情況下Output=" lookbehind表達式不包含在匹配中

我不認為正則表達式是最優的。

你可以使用:

'<Relation From="701047080" ObjectNumber="166543300" Output="77" To="464616324">' -match 'Output="(.*?)"'

(正則表達式與Output="(.*?)"一樣簡單)

$matches[1]得到77分$matches[1]

正則表達式可能只是復雜的外觀使得Output="不是匹配的一部分。它使正則表達式更復雜並降低性能。所有你需要的是上面的正則表達式並用適當的組提取77。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM