[英]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.