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