正则表达式学习
2017-06-13 16:03
120 查看
最近处理传感器数据,需要用到正则表达式,之前学过的已经忘光光. 重新学习一遍,mark一下,以防又忘光光.
介绍几个会用到的正则表达式:
a. (?<=pattern)
JDK API 1.6 解释为 : pattern(正则表达式),通过零宽度的正 lookbehind .
个人理解: 需要识别的数据之前数据符合正则表达式pattern.
正则表达式为 : (?<=31)\d{2}\b
(?<=31) : 需识别数据前面为31
\d{2} : 需识别数据为两个数字 (\d为数字,{2}为数字出现次数)
\b : 需识别数据后面为单词边界
贴上测试代码.
输出结果如下: 原始数据 : 3315 13121 1759 2516 3178213 3153 匹配后数据 : 21 53 正则表达式 : (?<=31)\d{2}\b
public class RegexDemo { public static void main(String[] args) { // TODO Auto-generated method stub String src = "3315 13121 1759 2516 3178213 3153"; String dst = ""; //需增加转义字符\ String regex = "(?<=31)\\d{2}\\b"; Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(src); while (matcher.find()){ dst += matcher.group(); dst += " "; } System.out.println("原始数据 : " + src); System.out.println("匹配后数据 : " + dst); System.out.println("正则表达式 : " + regex); } }
b. (?< !pattern)
JDK API 1.6 解释为 : pattern(正则表达式),通过零宽度的负 lookbehind .
个人理解: 需要识别的数据之前数据不符合正则表达式pattern.
正则表达式为 : (?< !31)\d{2}\b
(?< !31) : 需识别数据前面不为31
\d{2} : 需识别数据为两个数字 (\d为数字,{2}为数字出现次数)
\b : 需识别数据后面为单词边界
与上面代码区别只在于String regex = “(?< !31)\d{2}\b”;
输出结果如下: 原始数据 : 3315 13121 1759 2516 3178213 3153 匹配后数据 : 15 59 16 13 正则表达式 : (?<!31)\d{2}\b
c. (?=pattern)
JDK API 1.6 解释为 : pattern(正则表达式),通过零宽度的正 lookahead.
个人理解: 需要识别的数据之后数据符合正则表达式pattern.
正则表达式为 : \d{2}(?=15)
(? =15) : 需识别数据后面为15
\d{2} : 需识别数据为两个数字 (\d为数字,{2}为数字出现次数)
与上面代码区别只在于String regex = “\d{2}(?=15)”;
原始数据 : 3315 13121 1759 2516 3178213 3153 匹配后数据 : 33 正则表达式 : \d{2}(?=15)
d. (?!pattern)
JDK API 1.6 解释为 : pattern(正则表达式),通过零宽度的负 lookahead.
个人理解: 需要识别的数据之后数据不符合正则表达式pattern.
正则表达式为 : \d{2}(?!15)
4000
(? =15) : 需识别数据后面不为15
\d{2} : 需识别数据为两个数字 (\d为数字,{2}为数字出现次数)
与上面代码区别只在于String regex = “\d{2}(?!15)”;
原始数据 : 3315 13121 1759 2516 3178213 3153 匹配后数据 : 31 13 12 17 59 25 16 31 78 21 31 53 正则表达式 : \d{2}(?!15)
贴一组待处理传感器数据,需匹配出缺少 (‘]’) 数据, 补齐(‘]’), 以及一行有多组数据时,插入换行符使得每行只有一组数据.
[20,-344,-28]
[36,-360,-24]
[64,-228,28]
[28,-164,36]
[32,-176,20]
[76,-220,-8]
[60,-240,8[68,-228,32] — 缺少]
[68,-228,32]
[128,-252,-4]
[104,-340,-24]
[72,-236,-8] [108,-376,-24] – 一行多组数据
[76,-284,-28]
[-12,-364,-76]
[32,-260,-32]
1.找出缺少’]’的数据
统计数据过程中发现,缺少’]’的数据,都是 “数字[“ 的形式.
正则表达式为 (?<=\d)[
使用格式: String.replaceAll(“(?<=\d)\ [” , “\]\[“);
2.获取[] 内数据
正则表达式为 (?<=[)(\S+)(?=]);
regex = “(?<=\[)(\S+)(?=\ ])”;
第一次写blog, 欢迎路过的同志们指出问题.^_^
相关文章推荐
- javascript中正则表达式应用学习_search ()
- 正则表达式学习笔记
- 学习正则表达式(regular expression)
- 最近学习正则表达式,接下来会跟大家交流一下
- 正则表达式学习
- 通过例子学习正则表达式(一)--基础知识
- 快速学习正则表达式
- 正则表达式相关学习
- 正则表达式学习一
- 正则表达式 学习总结
- 正则表达式学习笔记
- 正则表达式学习
- javascript中正则表达式应用学习_Split()
- javascript中正则表达式应用学习_test()
- [JavaScript]正则表达式学习
- 正则表达式学习笔记
- 正则表达式学习笔记 (转载)
- 正则表达式学习
- 正则表达式学习
- 正则表达式学习中