[英]Regex: exclude string from matched pattern
輸入字符串:
hrStorageDescr{hrStorageDescr="devfs: dev file system, mounted on: /.mount/dev"}
正則表達式僅匹配hrStorageDescr
的值:
.*hrStorageDescr="(.*?)",.*
如果devfs
字符串匹配,如何編寫此正則表達式以保留匹配的 function,但排除值中的所有內容?
您可以匹配bhrStorageDescr前面有一個單詞邊界\b
首先匹配="並斷言直接在右邊的不是devfs后跟使用負前瞻(?!devfs\b)
的單詞邊界
如果該斷言成功,則使用否定字符 class 在匹配除"
之外的任何字符的組中捕獲並在匹配結束雙引號([^"]+)
之前關閉組
使用.*
將匹配模式的最后一次出現,使用.*?
將匹配第一個。 如果要匹配所有匹配項,則可以省略該部分,假設您允許匹配所有匹配項而不是單個匹配項。
.*?\bhrStorageDescr="(?!devfs\b)([^"]+)"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.