我正在处理输入(来自诸如ls -la --color之类的源)并强调文本的某些部分。我不是逐个字符地处理这些输入,而是使用大量的正则表达式,这使得跟踪我所影响的子字符串是否已经着色或加粗变得相当困难。如果我有一段红色的文本,并且我想要在其中的某个部分下划线,我可能会这样做:
(我的表达更加复杂。实际上,匹配项被提取出来,单独处理,然后进一步分解和分析。这不是通过改变我在这里给出的表达式就能完成的。)
上面的代码将替换所有出现的123为[UNDERLINE_START]123[FORMAT_RESET]。不幸的是,重置也会关闭文本的着色。如果我只想禁用下划线而不影响其他内容,那将为我节省很多麻烦,但我相当确定没有办法做到这一点。有人可以告诉我我错了吗?
编辑:我可以简化问题,问:如果我想关闭下划线,是否可以在不影响当前文本颜色的情况下进行,因为该颜色可能在我的脚本执行之前就已经设置好了,而我没有办法检测到该颜色是什么?
s/(123)/\033[4m\1\033[0m/g
(我的表达更加复杂。实际上,匹配项被提取出来,单独处理,然后进一步分解和分析。这不是通过改变我在这里给出的表达式就能完成的。)
上面的代码将替换所有出现的123为[UNDERLINE_START]123[FORMAT_RESET]。不幸的是,重置也会关闭文本的着色。如果我只想禁用下划线而不影响其他内容,那将为我节省很多麻烦,但我相当确定没有办法做到这一点。有人可以告诉我我错了吗?
编辑:我可以简化问题,问:如果我想关闭下划线,是否可以在不影响当前文本颜色的情况下进行,因为该颜色可能在我的脚本执行之前就已经设置好了,而我没有办法检测到该颜色是什么?
2
表示浅色,不表示取消粗体。22
表示取消浅色 和 粗体。使用21
取消粗体并不被广泛支持(例如,在 macOS 上没有支持)。 - Rockallite