求助:如何用C语言Linux下打印带颜色的字符串

求助:如何用C语言Linux下打印带颜色的字符串,第1张

用C语言Linux下打印带颜色的字符串

字背景颜色范围:40----49 40:黑 41:深红 42:绿 43:黄色 44:蓝色 45:紫色 46:深绿 47:白色

字颜色:30-----------39 30:黑 31:红 32:绿 33:黄 34:蓝色 35:紫色 36:深绿 37:白色

============ANSI控制码的说明 ===============

33[0m 关闭所有属性

33[1m 设置高亮度

33[4m 下划线

33[5m 闪烁

33[7m 反显

33[8m 消隐

33[30m -- 33[37m 设置前景色

33[40m -- 33[47m 设置背景色

33[nA 光标上移n行

33[nB 光标下移n行

33[nC 光标右移n行

33[nD 光标左移n行

33[yxH设置光标位置

33[2J 清屏

33[K 清除从光标到行尾的内容

33[s 保存光标位置

33[u 恢复光标位置

33[?25l 隐藏光标

33[?25h 显示光标

基本格式:

一种控制:printf("\033[xm")

多种控制:printf("\033[xyzm")等价于printf("\033[xm\033[ym\033[zm ")

方法如下: 在Vi里面如果要搜索某个关键字,只要键入/xxx就可以了,比如,要搜索一个函数,就键入/snprintf 然后回车,一个文件中,所有出现这个字样的地方都会被高亮显示。按n键,就可以自动把光标跳到下一个。 消除高亮:键入:noh就可以了。

个人认为,就是完全匹配与部分匹配的差别。

grep

只要字符串中有部分能够与正则匹配即可,并且会输出匹配的一整行。帮助里这样讲:

grep

searches

the

named

input

FILEs

(or

standard

input)

for

lines

containing

(注意,是containing)

a

match

to

the

given

PATTERN.

By

default,

grep

prints

the

matching

lines.

如果你在终端里正确设置了颜色显示,那么可以看到:

echo

"abcde"

|

grep

"cde"

结果输出

abcde,其中cde是高亮红色显示的(只匹配了部分)。

echo

"abcde"

|

grep

".*cde"

结果也是输出

abcde,其中abcde全是高亮红色显示的。

这表示grep是部分匹配的,只要有部分字符串匹配就OK。

expr

STRING

:

REGEXP

则是完整匹配,输出最后匹配的那个位置(anchor)。帮助里这样说的:

STRING

:

REGEXP

anchored

pattern

match

of

REGEXP

in

STRING

规定了:后面必须跟正则表达式,用于格式匹配。

.*b

是正则表达式,可用于匹配任何以b结尾的字符串。

但“cde”如果被用作完全匹配的话,就是必须匹配以c开头的字符串,显然匹配不到,因为:前的字符串以a开头。^_^

如果改为

expr

"cdeab"

:

"cde"

,这样就可以匹配成功并且返回3。

看看源码应该能更清楚内部实现方式的区别。我没看过,因此也不好多说了。以上纯属个人看法,仅供探讨。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8988879.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-23
下一篇 2023-04-23

发表评论

登录后才能评论

评论列表(0条)

保存