正则表达式:从匹配的模式中排除字符串

时间:2020-05-07 10:25:27

标签: regex

输入字符串:

hrStorageDescr{hrStorageDescr="devfs: dev file system, mounted on: /.mount/dev"}

仅与hrStorageDescr的值匹配的正则表达式:

.*hrStorageDescr="(.*?)",.*

如何编写此正则表达式以保留匹配功能,但如果匹配devfs字符串,则排除值中的所有内容?

1 个答案:

答案 0 :(得分:0)

您可以在 bhrStorageDescr 之前加上单词边界\b

首先匹配 =“ 并断言直接在右边的不是 devfs ,然后使用负前瞻(?!devfs\b)

紧跟单词边界

如果该断言成功,则使用否定的字符类将与"以外的任何字符匹配的组捕获,并在匹配结束双引号([^"]+)

之前关闭该组

使用.*将匹配模式的最后一次出现,使用.*?将匹配第一个模式。如果要匹配所有匹配项,则可以省略该部分,前提是您允许匹配所有匹配项,而不是单个匹配项。

.*?\bhrStorageDescr="(?!devfs\b)([^"]+)"

Regex demo

相关问题