Java正则表达式

it2023-04-18  83

Java中也可以通过处理字符串的方式达到检索,替换文本字符串的目的,但是有了正则表达式写代码更加简洁。

一、正则表达式语法

二、Java如何写正则表达式

在java中调用正则表达式的类是java.util.regex.Matcher和java.util.regex.Pattern。 一、导入java.util.regex下所有的包。

import java.util.regex.*;

二、通过正则表达式实现匹配、替换、切割等放法。

三、例

一、在给定的字符串中找数字串

import java.util.regex.Matcher; import java.util.regex.Pattern; public class RegexMatches { public static void main( String args[] ){ // 按指定模式在字符串查找 String line = "This order was placed for QT3000! OK?"; String pattern = "(\\D*)(\\d+)(.*)"; // 创建 Pattern 对象 Pattern r = Pattern.compile(pattern); // 现在创建 matcher 对象 Matcher m = r.matcher(line); if (m.find( )) { System.out.println("Found value: " + m.group(0) ); System.out.println("Found value: " + m.group(1) ); System.out.println("Found value: " + m.group(2) ); System.out.println("Found value: " + m.group(3) ); } else { System.out.println("NO MATCH"); } } }

结果:

Found value: This order was placed for QT3000! OK? Found value: This order was placed for QT Found value: 3000 Found value: ! OK?

1 compile:读取正则表达式 2 group():group是针对()来说的,group(0)就是指的整个串,group(1) 指的是第一个括号里的东西,group(2)指的第二个括号里的东西。 3 \D:非数字字符匹配。等效于 [^0-9]。 4 * : 零次或多次匹配前面的字符或子表达式。例如,zo* 匹配"z"和"zoo"。* 等效于 {0,}。 5 \d:数字字符匹配。等效于 [0-9]。 6 .:匹配除"\r\n"之外的任何单个字符。若要匹配包括"\r\n"在内的任意字符,请使用诸如"[\s\S]"之类的模式

二、对单词 “cat” 出现在输入字符串中出现次数进行计数

import java.util.regex.Matcher; import java.util.regex.Pattern; public class RegexMatches { private static final String REGEX = "\\bcat\\b"; private static final String INPUT = "cat cat cat cattie cat"; public static void main( String args[] ){ Pattern p = Pattern.compile(REGEX); Matcher m = p.matcher(INPUT); // 获取 matcher 对象 int count = 0; while(m.find()) { count++; System.out.println("Match number "+count); System.out.println("start(): "+m.start()); System.out.println("end(): "+m.end()); } } }

结果:

Match number 1 start(): 0 end(): 3 Match number 2 start(): 4 end(): 7 Match number 3 start(): 8 end(): 11 Match number 4 start(): 19 end(): 22

1 \b: 匹配一个字边界,即字与空格间的位置。例如,“er\b"匹配"never"中的"er”,但不匹配"verb"中的"er"。 2 find():find()方法在部分匹配时和完全匹配时返回true,匹配不上返回false。 三、替换

public void regexReplace () { //要匹配的字符 String str = "12a6B985Ccv65"; //正则表达式 String regex = "[a-zA-Z]+"; //正则表达式 String regex2 = "\\d+"; //将字符串中英文字母替换为&符号,输出12&6&985&65 System.out.println(str.replaceAll(regex, "&")); //将字符串中单个数字或者连续的数字替换为0,输出0a0B0Ccv0 System.out.println(str.replaceAll(regex2,"0")); }

1 [a-b]:字符范围。匹配指定范围内的任何字符。例如,"[a-z]"匹配"a"到"z"范围内的任何小写字母。

最新回复(0)