Regex 替换除“以外的所有文本”;“模式”;使用正则表达式

Regex 替换除“以外的所有文本”;“模式”;使用正则表达式,regex,replace,find,Regex,Replace,Find,我有一个软件,给定一个正则表达式,它可以执行查找和替换。它不是一种编码语言,所以除了正则表达式之外,没有其他建议是有用的。我一直在寻找一个表达式,它可以帮助我找到除“pattern”之外的所有文本。该模式不一定在字符串的开头或结尾,可以出现多次。给定字符串: red blue yellow green orange purple blue black green white 还有一个模式: blue.*?green 这是一个在线路上出现两次的模式,我试图选择除此之外的所有内容。(目的是删除所

我有一个软件,给定一个正则表达式,它可以执行查找和替换。它不是一种编码语言,所以除了正则表达式之外,没有其他建议是有用的。我一直在寻找一个表达式,它可以帮助我找到除“pattern”之外的所有文本。该模式不一定在字符串的开头或结尾,可以出现多次。给定字符串:

red blue yellow green orange purple blue black green white
还有一个模式:

blue.*?green
这是一个在线路上出现两次的模式,我试图选择除此之外的所有内容。(目的是删除所选图案,只保留图案)。 我试过:

FIND - ".*?(blue.?green)" 
REPLACE - "$1", 

但最后还是留下了“白色”。任何帮助都将不胜感激

通常是这样的

查找
(?:(?!蓝色。*?绿色)。*(蓝色。*?绿色)

更换
$1

扩大

 (?:
      (?! blue .*? green )
      . 
 )*
 ( blue .*? green )?           # (1)
输出

blue yellow greenblue black green

我假设
是一个打字错误,意思是
+?
。如果你不打电话?这给了你什么?通过消除过程,您需要在末尾添加一个
*?
,对吗?嗯,几乎是对的<正则表达式末尾的code>*?将不匹配任何内容,因为它不必匹配。另一方面,
*
将匹配。我想最大的问题是为什么在开始时使用
*?
而不是
*
。如果蓝色和绿色是分隔符,那么第一个和最后一个找到的是什么呢?抱歉,是的,这是一个输入错误。如果你不使用开头的“*?”,它只会用它自己替换模式,所以不会对文本进行任何更改。如果我在前面使用.*的话,它是贪婪的,在第二次匹配之前,所有东西都匹配,所以第一次模式匹配就失败了。效果很好!谢谢你。我已经折磨了自己将近一天了,试图弄明白这一点。现在我只需要坐下来想想它是如何工作的,但我能做到。再次感谢你,伙计。