Java正则表达式相关知识点有哪些

技术Java正则表达式相关知识点有哪些这篇文章主要介绍“Java正则表达式相关知识点有哪些”,在日常操作中,相信很多人在Java正则表达式相关知识点有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望

本文主要介绍“与Java正则表达式相关的知识点有哪些”。在日常操作中,相信很多人对于Java正则表达式相关的知识点有哪些都有疑问。边肖查阅了各种资料,整理出简单易用的操作方法,希望能帮助大家解答“Java正则表达式相关知识点有哪些”的疑惑!接下来,请和边肖一起学习!

\反斜杠

\ t服务器(' u0009 ')

\n换行(' u000A ')

\r输入(' \ u000D ')

\d数字相当于[0-9]

\D相当于[0-9]的非数字

\s空白符号[\t\n\x0B\f\r]

\S非空白符号[\ t \ n \ x0b \ f \ r]

\w单个字符[a-zA-Z_0-9]

\W非独立字符[a-za-z _ 0-9]

\f页面馈送字符

\eEscape

一个单词的边界

\B非字边界。

\G结束上一场比赛的^为限制开头

Java条件仅限于以Java开头的字符。

$是极限的终点。

Java$条件仅限于以Java结尾的字符。限制任意字符

Java 语言(一种计算机语言,尤用于创建网站).条件仅限于除换行符之外的java后面任意两个字符的加入特定限制条件[]

[a-z]条件限于小写字母atoz范围内的一个字符。

[A-Z]条件限于大写字母AtoZ范围内的一个字符。

[a-zA-Z]条件限制为小写字母atoz或大写字母AtoZ范围内的一个字符。

[0-9]条件在0到9的小写中被限制为一个字符。

[0-9a-z]条件限于小写0到9或atoz范围内的一个字符。

[0-9[a-z]]条件仅限于小写0到9或atoz范围内一个字符(交集)的[]中加入^后加再次限制条件[^]

[a-z]条件限于非小写字母范围内的一个字符。

[a-z]条件在非大写的AtoZ范围内限于一个字符。

[a-za-z]条件限于非小写atoz或大写AtoZ范围内的一个字符。

[

^0-9]     条件限制在非小写0 to 9范围中一个字符
[^0-9a-z] 条件限制在非小写0 to 9或a to z范围中一个字符
[^0-9[a-z]] 条件限制在非小写0 to 9或a to z范围中一个字符(交集)

在限制条件为特定字符出现0次以上时,可以使用*

J*     0个以上J
.*     0个以上任意字符
J.*D     J与D之间0个以上任意字符

在限制条件为特定字符出现1次以上时,可以使用+

J+     1个以上J
.+     1个以上任意字符
J.+D     J与D之间1个以上任意字符

在限制条件为特定字符出现有0或1次以上时,可以使用?

JA?     J或者JA出现

限制为连续出现指定次数字符{a}

J{2}     JJ
J{3}     JJJ

文字a个以上,并且{a,}

J{3,}     JJJ,JJJJ,JJJJJ,???(3次以上J并存)

文字个以上,b个以下{a,b}

J{3,5}     JJJ或JJJJ或JJJJJ

两者取一|

J|A     J或A
Java|Hello     Java或Hello

()中规定一个组合类型

比如,我查询<a href=\"index.html\">index</a>中<a href></a>间的数据,可写作<a.*href=\".*\">(.+?)</a>

在使用Pattern.compile函数时,可以加入控制正则表达式的匹配行为的参数:

Pattern Pattern.compile(String regex, int flag)

flag的取值范围如下:

Pattern.CANON_EQ :当且仅当两个字符的"正规分解(canonical decomposition)"都完全相同的情况下,才认定匹配。比如用了这个标志之后,表达式"a\u030A"会匹配"?"。默认情况下,不考虑"规范相等性(canonical equivalence)"。

Pattern.CASE_INSENSITIVE(?i): 默认情况下,大小写不明感的匹配只适用于US-ASCII字符集。这个标志能让表达式忽略大小写进行匹配。要想对Unicode字符进行大小不明感的匹配,只要将UNICODE_CASE与这个标志合起来就行了。

Pattern.COMMENTS(?x):在这种模式下,匹配时会忽略(正则表达式里的)空格字符(译者注:不是指表达式里的"\\s",而是指表达式里的空格,tab,回车之类)。注释从#开始,一直到这行结束。可以通过嵌入式的标志来启用Unix行模式。

Pattern.DOTALL(?s) :在这种模式下,表达式'.'可以匹配任意字符,包括表示一行的结束符。默认情况下,表达式'.'不匹配行的结束符。

Pattern.MULTILINE(?m):在这种模式下,'^'和'$'分别匹配一行的开始和结束。此外,'^'仍然匹配字符串的开始,'$'也匹配字符串的结束。默认情况下,这两个表达式仅仅匹配字符串的开始和结束。

Pattern.UNICODE_CASE(?u):在这个模式下,如果你还启用了CASE_INSENSITIVE标志,那么它会对Unicode字符进行大小写不明感的匹配。默认情况下,大小写不敏感的匹配只适用于US-ASCII字符集。

Pattern.UNIX_LINES(?d):在这个模式下,只有'\n'才被认作一行的中止,并且与'.','^',以及'$'进行匹配。

抛开空泛的概念,下面写出几个简单的Java正则用例:

◆比如,在字符串包含验证时

//查找以Java开头,任意结尾的字符串
Pattern pattern = Pattern.compile("^Java.*");
Matcher matcher = pattern.matcher("Java不是人");
boolean b= matcher.matches();
//当条件满足时,将返回true,否则返回false
System.out.println(b);

◆以多条件分割字符串时

Pattern pattern = Pattern.compile("[, |]+");
String[] strs = pattern.split("Java Hello World  Java,Hello,,World|Sun");
for (int i=0;i<strs.length;i++) {
System.out.println(strs[i]);
}

◆文字替换(首次出现字符)

Pattern pattern = Pattern.compile("正则表达式");
Matcher matcher = pattern.matcher("正则表达式 Hello World,正则表达式 Hello World");
//替换第一个符合正则的数据
System.out.println(matcher.replaceFirst("Java"));

◆文字替换(全部)

Pattern pattern = Pattern.compile("正则表达式");
Matcher matcher = pattern.matcher("正则表达式 Hello World,正则表达式 Hello World");
//替换第一个符合正则的数据
System.out.println(matcher.replaceAll("Java"));

◆文字替换(置换字符)

Pattern pattern = Pattern.compile("正则表达式");
Matcher matcher = pattern.matcher("正则表达式 Hello World,正则表达式 Hello World ");
StringBuffer sbr = new StringBuffer();
while (matcher.find()) {
matcher.appendReplacement(sbr, "Java");
}
matcher.appendTail(sbr);
System.out.println(sbr.toString());

◆验证是否为邮箱地址

String str="ceponline@yahoo.com.cn";
Pattern pattern = Pattern.compile("[\\w\\.\\-]+@([\\w\\-]+\\.)+[\\w\\-]+",
Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(str);
System.out.println(matcher.matches());

◆去除html标记

attern pattern = Pattern.compile("<.+?>", Pattern.DOTALL);
Matcher matcher = pattern.matcher("<a href=\"index.html\">主页</a>");
String string = matcher.replaceAll("");
System.out.println(string);

◆查找html中对应条件字符串

Pattern pattern = Pattern.compile("href=\"(.+?)\"");
Matcher matcher = pattern.matcher("<a href=\"index.html\">主页</a>");
if(matcher.find())
System.out.println(matcher.group(1));
}

◆截取http://地址

//截取url
Pattern pattern = Pattern.compile("(http://|https://){1}[\\w\\.\\-/:]+");
Matcher matcher = pattern.matcher("dsdsds<http://dsds//gfgffdfd>fdf");
StringBuffer buffer = new StringBuffer();
while(matcher.find()){              
buffer.append(matcher.group());        
buffer.append("\r\n");              
System.out.println(buffer.toString());
}

◆替换指定{}中文字

String str = "Java目前的发展史是由{0}年-{1}年";
String[][] object={new String[]{"\\{0\\}","1995"},new String[]{"\\{1\\}","2007"}};
System.out.println(replace(str,object));
public static String replace(final String sourceString,Object[] object) {
String temp=sourceString;    
for(int i=0;i<object.length;i++){
String[] result=(String[])object[i];
Pattern    pattern = Pattern.compile(result[0]);
Matcher matcher = pattern.matcher(temp);
temp=matcher.replaceAll(result[1]);
}
return temp;
}

◆以正则条件查询指定目录下文件

 //用于缓存文件列表
        private ArrayList files = new ArrayList();
        //用于承载文件路径
        private String _path;
        //用于承载未合并的正则公式
        private String _regexp;
        
        class MyFileFilter implements FileFilter {
              /**
               * 匹配文件名称
               */
              public boolean accept(File file) {
                try {
                  Pattern pattern = Pattern.compile(_regexp);
                  Matcher match = pattern.matcher(file.getName());                
                  return match.matches();
                } catch (Exception e) {
                  return true;
                }
              }
            }
        
        /**
         * 解析输入流
         * @param inputs
         */
        FilesAnalyze (String path,String regexp){
            getFileName(path,regexp);
        }
        
        /**
         * 分析文件名并加入files
         * @param input
         */
        private void getFileName(String path,String regexp) {
            //目录
              _path=path;
              _regexp=regexp;
              File directory = new File(_path);
              File[] filesFile = directory.listFiles(new MyFileFilter());
              if (filesFile == null) return;
              for (int j = 0; j < filesFile.length; j++) {
                files.add(filesFile[j]);
              }
              return;
            }
    
        /**
         * 显示输出信息
         * @param out
         */
        public void print (PrintStream out) {
            Iterator elements = files.iterator();
            while (elements.hasNext()) {
                File file=(File) elements.next();
                    out.println(file.getPath());    
            }
        }
        public static void output(String path,String regexp) {
            FilesAnalyze fileGroup1 = new FilesAnalyze(path,regexp);
            fileGroup1.print(System.out);
        }
    
        public static void main (String[] args) {
            output("C:\\","[A-z|.]*");
        }

到此,关于“Java正则表达式相关知识点有哪些”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/107925.html

(0)

相关推荐

  • python循环语句(python循环语句的运用)

    技术Python循环语句怎么用小编给大家分享一下Python循环语句怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!什么是循环呢?简单理解

    攻略 2021年12月19日
  • 租用香港云服务器有什么好处

    技术租用香港云服务器有什么好处很多用户建站的时候经常会在选择云服务器和物理服务器之间摇摆不定,实际上如果没有特别高的性能需求的话还是推荐选择云服务器更方便更省钱,下面让我们深入挖掘并研究使用云服务器建站的的好处。随时随地

    礼包 2021年12月23日
  • 如何深入解析Java 8 默认方法和多继承

    技术如何深入解析Java 8 默认方法和多继承本篇文章给大家分享的是有关如何深入解析Java 8 默认方法和多继承,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看

    攻略 2021年10月29日
  • SpringBoot中的Bean初始化方法是什么

    技术SpringBoot中的Bean初始化方法是什么本篇内容介绍了“SpringBoot中的Bean初始化方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这

    攻略 2021年11月29日
  • 如何理解LayaAir中的EventDispatcher类

    技术如何理解LayaAir中的EventDispatcher类这篇文章将为大家详细讲解有关如何理解LayaAir中的EventDispatcher类,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后

    攻略 2021年11月11日
  • 什么是微软total熔毁漏洞分析和预警?

    技术微软TotalMeltdown漏洞分析预警是怎样的这期内容当中小编将会给大家带来有关微软TotalMeltdown漏洞分析预警是怎样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

    攻略 2021年12月20日