网站地图 | RSS订阅 老铁博客 - 上海SEO优化|上海网站建设|蜘蛛池出租|站群代搭建
你的位置:首页 » 前端脚本 » 正文

正则表达式,正则表达式语法

2020-3-9 14:55:30 | 作者:老铁SEO | 0个评论 | 人浏览

  “?:”非获取匹配,匹配冒号后的内容但不获取匹配结果,不进行存储供以后使用。


  单独的“?”:匹配前面的子表达式零次或一次。


  当“?”紧跟在任何一个其他限制符(*,+,?,{n},{n,},{n,m})后面时,匹配模式是非贪婪的。非贪婪模式尽可能少地匹配所搜索的字符串,而默认的贪婪模式则尽可能多地匹配所搜索的字符串。


  正则表达式是对字符串(包括普通字符(例如,a到z之间的字母)和特殊字符(称为“元字符”))操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。正则表达式是一种文本模式,模式描述在搜索文本时要匹配的一个或多个字符串。


  正则表达式语法


  按照你的要求给出的Java正则表达式的例子如下


  //下面这个正则表达式匹配不能以.css,,.js,.json或者.xml结尾的字符串


  importjava.util.regex.Matcher;


  importjava.util.regex.Pattern;


  publicclassCC{


  publicstaticvoidmain(String[]args){


  Strings="xxxx.js.jss";//目标字符串


  Stringregex="((?!\\.((css)|(html)|(js)|(json)|(xml))$).)+";//正则表达式


  Patternp=Patternpile(regex);


  Matcherm=p.matcher(s);


  if(m.matches()){


  System.out.println("匹配");


  }else{


  System.out.println("不匹配");


  }


  }


  }


  正则表达式生成器


  正则表达式可以让开放人员更加有效的操纵文本内容,在各种各样的开发中经常会遇到需要正则表达式解决的问题,比如验证邮箱,验证网址,一些小偷程序的批量替换等等。熟练的应用正则表达式可以方便于很多文本的操作,加快开发的进度。但是正则表达式并不是一个非常简单的东西,很多时候在应用的过程中会出现一些逻辑或者非逻辑上的错误和疏漏,那么我们正式需要一些工具来辅助我们验证正则表达式的正确性。


  1、txt2re(如果你不会写正则,用它可以生成你想要的正则表达式)。txt2re是一款在在线生成正则表达式的工具,你要输入你想匹配的文字,他就会将这些文字拆分到那些色块里面,然后你要进行相应的选择,其中c表示任意字符,int表示整数,year表示年等等。


  2、TheRegulator是其中的佼佼者。TheRegulator窗口主要分为六部分:WebSearch、RegexAnalyzer、SnippetsControl、表达式输入区、Match结果区、待解析文本区。比较重要的是RegexAnalyzer、表达式输入区、Match结果区、待解析文本区。在默认情况下,WebSearch区占了很大位置,可能需要调整一下。


  3、在线测正则表达式。在线测正则表达式国内的正则表达式在线工具,界面简单,在这个页面的下面还有各式各样的正则表达式参考大全,和这则表达式实例库的链接。


  4、在线正则表达式工具。在线正则表达式工具是国内另一个原创的正则表达式工具,实现了文本匹配,和替换等功能,界面简单实用,由于是中文的,所以很容易明白使用方法。


  在这里推荐大家学习一下人工编写,书籍的话推荐:《正则表达式教程chm完整版》是一本详细介绍了正则表达式的电子书教程,全书共分为8个小节,详细的讲述了正则表达式的定义,各种操作符的运算优先级,全部符号解释,正则表达式匹配规则,参考文献以及相关实例等,全书简明扼要,能够很好的帮助读者们正确掌握学习好正则表达式,从而在软件编程中得到更好发挥。


  正则表达式匹配字符串


  正则表达式:^(.?|[^/]{2}.*)(["“].*?["”])


  这里双引号支持英文和中文的双引号


  匹配这一行第一个双引号开始到第二个双引号结束的内容


  若这一行以//开通则不匹配


  匹配成功后取第2组的值即为所要结果


  java代码示例:


  publicclassTest{


  publicstaticvoidmain(String[]args){


  Patternpattern=Patternpile("^(.?|[^/]{2}.*)([\"“].*?[\"”])",Pattern.MULTILINE);


  Stringstr1="//测试“这一行不匹配”,其他字符串";


  Stringstr2="测“str2这一行匹配”,其他字符串";


  Stringstr3="其他字符串234“str3这一行匹配”其他字符串";


  Matchermatcher1=pattern.matcher(str1);


  if(matcher1.find()){//false,匹配不到


  System.out.println(matcher1.group(2));//nothing


  }


  Matchermatcher2=pattern.matcher(str2);


  if(matcher2.find()){//true


  System.out.println(matcher2.group(2));//str2这一行匹配


  }


  Matchermatcher3=pattern.matcher(str3);


  if(matcher3.find()){//true


  System.out.println(matcher3.group(2));//str3这一行匹配


  }


  }


  }<


  >

  • 本文来自: 老铁博客,转载请保留出处!欢迎发表您的评论
  • 相关标签:
  • 已有0位网友发表了一针见血的评论,你还等什么?

    必填

    选填

    记住我,下次回复时不用重新输入个人信息

    必填,不填不让过哦,嘻嘻。

    ◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

    相关推荐