如何玩转正则
我在学习编程与实际编程的过程中,总是为正则这个编程中的概念感叹不已.假设,没有正则这个概念工具,就是验证一个简单的手机号码.我们也得把客户输入的字符,一个个提取出来进行程序规则的验证。这增加了程序员的时间支出,如果再要匹配更复杂的模式,比如在英汉字典中找出最长的单词,工作量又大了好几倍.每感于此,我就觉得正则是一个十分强大的概念,自己特别想体会其中的妙用,但限于自己的编程生涯与认知层次,还未体验到其更高阶的乐趣.但是每次往前走一点,发现妙用或者有新的新的体会,做下记录与归纳,推演.相信一定会越来越懂它.希望与此文有一面之缘的人,可以留下有趣,或者有用的问题,激发大家使用正则来解决它. 我们写的程序本质上就是字符,而能有效的处理这些字符的工具将会促进我们的编程,而正则就是其中一个. 正则的主要功用就是 查找/替换.现将总结示例如下 1.在字典中查询最长的单词 public static void main(String[] args) {
String filePath = "E:《牛津高阶英汉词典》全集完整版TXT电子书牛津电子词典.txt";
// 输出文件中匹配正则的字符
String regualr="bw{15,}b";
Pattern pattern = Pattern.compile(regualr);
//printRegularText(pattern,filePath);
// 正则反义使用
regualr = "(d{2})/(d{2})/(d{2})";
// 输入美国日期格式 将此替换为中国日期格式
//repalceStrByregualr(regualr);
}
// 输出文件中匹配正则的字符
private static void printRegularText(Pattern pattern,String filePath) {
Scanner scanner = null;
try {
scanner = new Scanner(new File(filePath));
while(scanner.hasNext()){
String tempString = scanner.nextLine();
Matcher m = pattern.matcher(tempString);
while(m.find()){
System.out.println(m.group());
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} finally{
if(scanner!=null){
scanner.close();
}
}
}
// 美国日期格式替换为中国日期格式
private static void repalceStrByregualr(String regualr){
Scanner scanner = null;
try{
scanner = new Scanner(System.in);
while(scanner.hasNext()){
String tempLine = scanner.nextLine();
System.out.println(tempLine.replaceAll(regualr,"20$3-$1-$2"));
}
} catch (Exception e) {
// TODO: handle exception
} finally{
if(scanner!=null){
scanner.close();
}
}
}
促使本人写此文章的冲动,有一部分是因为看了伯乐在线的一篇博客55分钟学会正则表达式 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |