我对正则表达式很陌生,正在寻找一个匹配任何东西的正则表达式,除了所有匹配给定正则表达式的正则表达式。我已经找到了找到除了特定字符串之外的任何东西的方法,但我需要它不匹配正则表达式。而且它必须在Java中工作。
背景:我正在使用Ansi颜色字符串。我想取一个字符串,其中包含一些可能使用Ansi颜色代码进行格式化的文本,并删除除这些颜色代码之外的任何内容。这应该会为字符串上附加的任何字符给予当前的颜色格式。
格式化的字符串可能如下所示:
Hello \u001b[31;44mWorld\u001b[0m!
它将显示为Hello World!
,其中世界将在蓝色背景上显示为红色。
我用来查找代码的正则表达式是
\u001b\[\d+(;\d+)*m
现在我想要一个正则表达式,它匹配除了颜色代码之外的所有内容,所以它匹配
您好\u001b[31;44 m世界\u001b[0 m**!**
4条答案
按热度按时间q9yhzks01#
上下文中的正则表达式:
输出:
bnl4lu3b2#
Regex并不是真的要给予“除了”正则表达式匹配的所有内容。但是,通常最简单的方法是匹配你想要的内容(比如你的例子中的颜色代码),然后获取你拥有的字符串,并删除你找到的匹配,这将留下“除了”匹配的所有内容。
快速样本(未经测试)
结果应该是
string that has matches
,即正则表达式的逆t3irkdon3#
输出:
hfsqlsce4#
你可以这样做,它只是找到所有的匹配项,并把它们放在一个数组中,如果需要的话,这个数组可以连接到一个字符串。