首页 > 编程知识 正文

java表示负数,java 正则匹配

时间:2023-05-06 09:49:24 阅读:137361 作者:90

Java正则表达式是通过java.util.regex包下的Pattern和Matcher类实现的

Pattern类用于创建正则表达式。 这意味着它用于创建匹配模式。 可以使用两种静态方法创建: compile(stringregex )和compile(stringregex,int flags )。 其中regex是正则表达式,flags是可选模式)等等

实例:

pattern pattern=pattern.com pile (Java ); system.out.println (pattern.pattern ) ); Java Pattern类是返回此模式的正则表达式,有两种基于匹配模式划分输入序列的方法。 拆分(charsequenceinput )和拆分(charsequenceinput,int limit )。 其中limit是要返回的元素数。

实例:

pattern pattern=pattern.com pile (Java ); string test=' 123 Java 456 Java 789 Java '; string [ ] result=pattern.split (test; for(strings:result ) System.out.println(s ) s; 结果:

如果split(charsequenceinput,int limit )的值大于返回的最大字符串数或为负数,则返回的字符串数没有限制,但末尾可能包含空字符串如果limit=0,则为split ) charsequenceinput )和

pattern pattern=pattern.com pile (Java ); string test=' 123 Java 456 Java 789 Java '; string [ ] result=pattern.split (test,2 ); for(strings:result ) System.out.println(s ) s; result=Pattern.split(test,10 ); system.out.println (result.length; result=Pattern.split(test,-2); system.out.println (result.length; result=Pattern.split(test,0 ); system.out.println (result.length; 执行结果:

Pattern类也附带静态匹配方法matches(stringregex,CharSequence input ),但只能进行完整的字符串匹配,并且只能返回是否匹配的布尔值

实例:

String test1='Java '; String test2='Java123456 '; system.out.println (pattern.matches (' Java ',test1); 返回//true system.out.println (pattern.matches (' Java ',test2) ); 如果返回false,则最后转移到Matcher类。 Pattern类的Matcher(charsequenceinput )返回matcher对象。

Matcher类提供正则表达式分组支持和正则表达式多次匹配支持。 要获得更丰富的正则匹配操作,必须同时使用Pattern和Matcher。

实例:

pattern pattern=pattern.com pile (Java ); string test=' 123 Java 456 Java 789 Java '; Matcher matcher=pattern.matcher (; Matcher类有三种返回布尔的匹配方法。 matches ()、lookingAt、find )、find ) intstart )。 matches ) )用于匹配整个字符串,lookingAt是从字符串开头开始的匹配子字符串

实例

pattern pattern=pattern.com pile (Java ); String test1='Java '; String test2='Java1234 '; string test3=' 1234 Java ' matcher matcher=pattern.matcher (test1 ); system.out.println (matcher.matches () ); 返回//true matcher=pattern.matcher (test2)返回system.out.println (matcher.matches () ); 返回//false matcher=pattern.matcher (test2)返回system.out.println (matcher.looking at () ) ://truematcher

= pattern.matcher(test3);System.out.println(matcher.lookingAt());//返回falsematcher = pattern.matcher(test1);System.out.println(matcher.find());//返回truematcher = pattern.matcher(test2);System.out.println(matcher.find());//返回truematcher = pattern.matcher(test3);System.out.println(matcher.find(2));//返回truematcher = pattern.matcher(test3);System.out.println(matcher.find(5));//返回false

这里介绍下组的概念:组是用括号划分的正则表达式,可以根据组的编号来引用这个组。组号为0表示整个表达式,组号为1表示被第一对括号括起的组,依次类推,例如A(B(C))D,组0是ABCD,组1是BC,组2是C。

Matcher类提供了start(),end(),group()分别用于返回字符串的起始索引,结束索引,以及匹配到到的字符串。

实例:

Pattern pattern = Pattern.compile("Java");String test = "123Java456";Matcher matcher = pattern.matcher(test);matcher.find();System.out.println(matcher.start());//返回3System.out.println(matcher.end());//返回7System.out.println(matcher.group());//返回Java

Matcher类提供了start(int gropu),end(int group),group(int i),groupCount()用于分组操作

实例:

Pattern pattern = Pattern.compile("(Java)(Python)");String test = "123JavaPython456";Matcher matcher = pattern.matcher(test);matcher.find();System.out.println(matcher.groupCount());//返回2System.out.println(matcher.group(1));//返回第一组匹配到的字符串"Java",注意起始索引是1System.out.println(matcher.start(1));//返回3,第一组起始索引System.out.println(matcher.end(1));//返回7 第一组结束索引System.out.println(matcher.group(2));//返回第二组匹配到的字符串"Python"System.out.println(matcher.start(2));//返回7,第二组起始索引System.out.println(matcher.end(2));//返回13 第二组结束索引

Matcher类还提供region(int start, int end)(不包括end)方法用于设定查找范围,并提供regionStrat()和regionEnd()用于返回起始和结束查找的索引

Pattern pattern = Pattern.compile("Java"); String test = "123JavaJava"; Matcher matcher = pattern.matcher(test); matcher.region(7, 11); System.out.println(matcher.regionStart());//返回7 System.out.println(matcher.regionEnd());//返回11 matcher.find(); System.out.println(matcher.group());//返回Java

Matcher类提供了两种用于重置当前匹配器的方法:reset()和reset(CharSequence input)

Pattern pattern = Pattern.compile("Java"); String test = "Java"; Matcher matcher = pattern.matcher(test); matcher.find(); System.out.println(matcher.group());//返回Java matcher.reset();//从起始位置重新匹配 matcher.find(); System.out.println(matcher.group());//返回Java matcher.reset("Python"); System.out.println(matcher.find());//返回false

最后说一下Matcher类的匹配方法:replaceAll(String replacement) 和 replaceFirst(String replacement),其中replaceAll是替换全部匹配到的字符串,而replaceFirst仅仅是替换第一个匹配到的字符串。

Pattern pattern = Pattern.compile("Java"); String test = "JavaJava"; Matcher matcher = pattern.matcher(test); System.out.println(matcher.replaceAll("Python"));//返回PythonPython System.out.println(matcher.replaceFirst("python"));//返回PythonJava

还有两个方法appendReplacement(StringBuffer sb, String replacement) 和 appendTail(StringBuffer sb)也很重要,appendReplacement允许直接将匹配的字符串保存在另一个StringBuffer中并且是渐进式匹配,并不是只匹配依次或匹配全部,而appendTail则是将未匹配到的余下的字符串添加到StringBuffer中。

Pattern pattern = Pattern.compile("Java"); Matcher matcher = pattern.matcher("Java1234"); System.out.println(matcher.find());//返回true StringBuffer sb = new StringBuffer(); matcher.appendReplacement(sb, "Python"); System.out.println(sb);//输出Python matcher.appendTail(sb); System.out.println(sb);//输出Python1234

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。