java中正则表达式

Posted 殷瑜泰

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中正则表达式相关的知识,希望对你有一定的参考价值。

   

常用的正则表达式规则:

A:字符

x 字符 x。举例:\'a\'表示字符a

\\\\ 反斜线字符。

\\n 新行(换行)符 (\'\\u000A\')

\\r 回车符 (\'\\u000D\')

   

B:字符类

[abc] ab c(简单类)

[^abc] 任何字符,除了 ab c(否定)

[a-zA-Z] a z A Z,两头的字母包括在内(范围)

[0-9] 09的字符都包括

   

C:预定义字符类

. 任何字符。我的就是.字符本身,怎么表示呢? \\.

\\d 数字:[0-9]

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

在正则表达式里面组成单词的东西必须有这些东西组成

   

D:边界匹配器

^ 行的开头

$ 行的结尾

\\b 单词边界

就是不是单词字符的地方。

举例:hello world?haha;xixi

   

E:Greedy 数量词

X? X,一次或一次也没有

X* X,零次或多次

X+ X,一次或多次

X{n} X,恰好 n

X{n,} X,至少 n

X{n,m} X,至少 n 次,但是不超过 m

我有如下一个字符串:"91 27 46 38 50"

请写代码实现最终输出结果是:"27 38 46 50 9

   

分析:

A:定义一个字符串

B:把字符串进行分割,得到一个字符串数组

C:把字符串数组变换成int数组

D:int数组排序

E:把排序后的int数组在组装成一个字符串

F:输出字符串

Demo:

public class RegexTest {

public static void main(String[] args) {

// 定义一个字符串

String s = "91 27 46 38 50";

   

// 把字符串进行分割,得到一个字符串数组

String[] strArray = s.split(" ");

   

// 把字符串数组变换成int数组

int[] arr = new int[strArray.length];

   

for (int x = 0; x < arr.length; x++) {

arr[x] = Integer.parseInt(strArray[x]);

}

   

// int数组排序

Arrays.sort(arr);

   

// 把排序后的int数组在组装成一个字符串

StringBuilder sb = new StringBuilder();

for (int x = 0; x < arr.length; x++) {

sb.append(arr[x]).append(" ");

}

//转化为字符串

String result = sb.toString().trim();

   

//输出字符串

System.out.println("result:"+result);

}

}

正则的替换功能:

String类的public String replaceAll(String regex,String replacement)

使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。

   

demo:

public class RegexDemo {

public static void main(String[] args) {

// 定义一个字符串

String s = "helloqq12345worldkh622112345678java";

   

// 我要去除所有的数字,*给替换掉

// String regex = "\\\\d+";

// String regex = "\\\\d";

//String ss = "*";

   

   

// 直接把数字干掉

String regex = "\\\\d+";

String ss = "";

   

String result = s.replaceAll(regex, ss);

System.out.println(result);

}

}

获取下面这个字符串中由三个字符组成的单词

   

da jia ting wo shuo,jin tian yao xia yu,bu shang wan zi xi,gao xing bu?

   

demo:

public class RegexDemo2 {

public static void main(String[] args) {

// 定义字符串

String s = "da jia ting wo shuo,jin tian yao xia yu,bu shang wan zi xi,gao xing bu?";

// 规则

String regex = "\\\\b\\\\w{3}\\\\b";

   

// 把规则编译成模式对象

Pattern p = Pattern.compile(regex);

// 通过模式对象得到匹配器对象

Matcher m = p.matcher(s);

// 调用匹配器对象的功能

// 通过find方法就是查找有没有满足条件的子串

// public boolean find()

// boolean flag = m.find();

// System.out.println(flag);

// // 如何得到值呢?

// // public String group()

// String ss = m.group();

// System.out.println(ss);

//

// // 再来一次

// flag = m.find();

// System.out.println(flag);

// ss = m.group();

// System.out.println(ss);

   

while (m.find()) {

System.out.println(m.group());

}

   

// 注意:一定要先find(),然后才能group()

// IllegalStateException: No match found

// String ss = m.group();

// System.out.println(ss);

}

}

 

以上是关于java中正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

Java中正则表达式的问题

java正则表达式

java正则表达式中[&&]用法

Java中正则表达式判断

Java中 正则表达式中 组 是怎么用的?我看了n遍,没看懂

java正则表达式如何获取字符串中所有匹配内容