String s="\033[47;31mhello world\033[5m\033[47;31mABCD EFGH\033[5m"这串字符中\033相当于是包头包尾是固定的而
包头中 \033[47;31m 后面的[47;31m 不固定
包尾中 \033[5m 后面的[5m 也不固定
中间的为文本字段 也不固定
现在要求将这串字符串解析成为三个集合,或者数组里面安装顺序放置请帮忙解析下
包头中 \033[47;31m 后面的[47;31m 不固定
包尾中 \033[5m 后面的[5m 也不固定
中间的为文本字段 也不固定
现在要求将这串字符串解析成为三个集合,或者数组里面安装顺序放置请帮忙解析下
\033[47;31mhello world\033[5m
\033[47;31mABCD EFGH\033[5m
的字符串
在进行对每一个字符串再次进行分割 分割成为 \033[47;31m hello world \033[5m 忘高手帮我参考参考,顺便帮我写下这样的正则表达式,不胜感激
这是通过Socket发送过来的数据,数据当然不能够改变了
现在想的只是解析方式
public static void main(String[] args){
String regx;
String line = "\033[47;31mhello world\033[5m\033[47;31mABCD EFGH\033[5m";
regx="\\033.[0-9]+;[0-9]+m(.*?)\\033.[0-9]+m";
//regx="<a.*?>(.*?)</a>";
Pattern p = Pattern.compile(regx);
Matcher m = p.matcher(line);
while(m.find()){
System.out.println(m.group(1));
}
}
输出:
hello world
ABCD EFGH
要是还想更精确就得把需求说的更明白一点,最好写上想要什么结果
这里就是对应包头包尾部里面字段的意义,请高手帮忙想一种方便的分割方式包头里面的值\033[47;31m 我想 这里的 m应该是固定的
QUOTE:
字背景颜色范围: 40--49 字颜色: 30--39
40: 黑 30: 黑
41: 红 31: 红
42: 绿 32: 绿
43: 黄 33: 黄
44: 蓝 34: 蓝
45: 紫 35: 紫
46: 深绿 36: 深绿
47: 白色 37: 白色ANSI控制码: -------对应包尾里面的值
QUOTE:
\033[0m关闭所有属性
\033[1m设置高亮度
\033[4m下划线
\033[5m闪烁
\033[7m反显
\033[8m消隐
\033[30m -- \033[37m设置前景色
\033[40m -- \033[47m设置背景色
\033[nA光标上移n行
\033[nB光标下移n行
\033[nC光标右移n行
\033[nD光标左移n行
\033[y;xH设置光标位置
\033[2J 清屏
\033[K清除从光标到行尾的内容
\033[s保存光标位置
\033[u恢复光标位置
\033[?25l 隐藏光标
\033[?25h 显示光标
\033[47;31mhello world\033[5m\033[47;31mABCD EFGH\033[5m
我取grop(0)的时候出现乱码这样的问题
而此处为字符串有没有更好点的匹配呀
public static void main(String[] args){
String regx;
String line = "\033[47;31mhello world\033[5m\033[47;31mABCD EFGH\033[5m";
regx="(.[0-9]+;[0-9]+m)(.*?)(.[0-9]+m)";
Pattern p = Pattern.compile(regx);
Matcher m = p.matcher(line);
while(m.find()){
System.out.println("\\033"+m.group(1));
System.out.println(m.group(2).replaceAll("\\033", ""));
System.out.println("\\033"+m.group(3));
}
}
输出:
\033[47;31m
hello world
\033[5m
\033[47;31m
ABCD EFGH
\033[5m
悲剧,现在才知道要解析的是shell脚本里面的字符
所有规范都按照shell脚本里面来
就是相当于找到 \033[47;31mhello\033[5dm world\033[5m\033[47;31mABCD EFGH\033[5m字符串中的
\033[47;31m \033[5dm \033[5m \033[47;31m \033[5m
String line = "\033[47;31mhello\033[5dm world\033[5m\033[47;31mABCD EFGH\033[5m";
String regx = "\\033(.*?m)";
Pattern p = Pattern.compile(regx);
Matcher m = p.matcher(line);
while(m.find()){
System.out.println(m.group(1));
}
}
输出:
[47;31m
[5dm
[5m
[47;31m
[5m