Regex 替换除“以外的所有文本”;“模式”;使用正则表达式
我有一个软件,给定一个正则表达式,它可以执行查找和替换。它不是一种编码语言,所以除了正则表达式之外,没有其他建议是有用的。我一直在寻找一个表达式,它可以帮助我找到除“pattern”之外的所有文本。该模式不一定在字符串的开头或结尾,可以出现多次。给定字符串:Regex 替换除“以外的所有文本”;“模式”;使用正则表达式,regex,replace,find,Regex,Replace,Find,我有一个软件,给定一个正则表达式,它可以执行查找和替换。它不是一种编码语言,所以除了正则表达式之外,没有其他建议是有用的。我一直在寻找一个表达式,它可以帮助我找到除“pattern”之外的所有文本。该模式不一定在字符串的开头或结尾,可以出现多次。给定字符串: red blue yellow green orange purple blue black green white 还有一个模式: blue.*?green 这是一个在线路上出现两次的模式,我试图选择除此之外的所有内容。(目的是删除所
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>*?将不匹配任何内容,因为它不必匹配。另一方面,*
将匹配。我想最大的问题是为什么在开始时使用*?
而不是*
。如果蓝色和绿色是分隔符,那么第一个和最后一个找到的是什么呢?抱歉,是的,这是一个输入错误。如果你不使用开头的“*?”,它只会用它自己替换模式,所以不会对文本进行任何更改。如果我在前面使用.*的话,它是贪婪的,在第二次匹配之前,所有东西都匹配,所以第一次模式匹配就失败了。效果很好!谢谢你。我已经折磨了自己将近一天了,试图弄明白这一点。现在我只需要坐下来想想它是如何工作的,但我能做到。再次感谢你,伙计。