欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java学习笔记(6)---正则表达式,方法

程序员文章站 2023-11-10 21:56:04
1.正则表达式: a.定义: 正则表达式定义了字符串的模式。 正则表达式可以用来搜索、编辑或处理文本。 正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别。 在Java,一个字符串其实就是一个简单的正则表达式,例如 Hello World 正则表达式匹配 "Hello World" 字符串 ......

1.正则表达式:

a.定义:

正则表达式定义了字符串的模式。

正则表达式可以用来搜索、编辑或处理文本。

正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别。

在java,一个字符串其实就是一个简单的正则表达式,例如 hello world 正则表达式匹配 "hello world" 字符串。

 

ava.util.regex 包主要包括以下三个类:

1.pattern类:pattern对象是一个正则表达式的编译表示。pattern 类没有公共构造方法。

要创建一个 pattern 对象,你必须首先调用其公共静态编译方法,它返回一个 pattern 对象。该方法接受一个正则表达式作为它的第一个参数。

 

2.matcher类:matcher 对象是对输入字符串进行解释和匹配操作的引擎。与pattern 类一样,matcher 也没有公共构造方法。

你需要调用 pattern 对象的 matcher 方法来获得一个 matcher 对象。

 

3.patternsyntaxexception:patternsyntaxexception 是一个非强制异常类,它表示一个正则表达式模式中的语法错误。

 

 

常见的正则表达式符号合集见:

 

b.捕获组:

 捕获组是把多个字符当一个单独单元进行处理的方法,它通过对括号内的字符分组来创建,我们来看一下以下代码。

 

string line = "this order was placed for qt3000! ok?";     //输入

string pattern = "(\\d*)(\\d+)(.*)";            //我们的三个捕获组

 

由于我们有三个(),所以最后会形成三个组,根据上面的正则表达式可得知结果为:

this order was placed for qt

3000

! ok?

需要注意的是假如你使用的是matcher对象,那group(0)将会是原string(整个string)。

 

在实际的开发中,为了方便我们很少直接使用pattern类或matcher类,而是使用string类下的方法

验证:boolean matches(string regex)

拆分: string[] split(string regex)

替换: string replaceall(string regex, string replacement)

 

c.语法:

 

在其他语言中,\\ 表示:我想要在正则表达式中插入一个普通的(字面上的)反斜杠,请不要给它任何特殊的意义。

 

在 java 中,\\ 表示:我要插入一个正则表达式的反斜线,所以其后的字符具有特殊的意义。

 

所以,在其他的语言中(如perl),一个反斜杠 \ 就足以具有转义的作用,而在 java 中正则表达式中则需要有两个反斜杠才能被解析为其他语言中的转义作用。也可以简单的理解在 java 的正则表达式中,两个 \\ 代表其他语言中的一个 \,这也就是为什么表示一位数字的正则表达式是 \\d,而表示一个普通的反斜杠是 \\\\。

 

 

 

 注:正则表达式的内容非常多,这里就不一一列出了,参考读物:

 

 

 2.java方法:

 java是一门面对对象的语言,所以说没有函数只有方法,但是大体上函数和方法应用差不多。

a.定义:

修饰符 返回值类型 方法名(参数类型 参数名)

{

...

方法体

...

return 返回值;

}

我们来看一个实际的例子,这个方法返回两个参数最大值:

public static int max(int num1, int num2) {

int result;

if (num1 > num2)

result = num1;

else

result = num2;

return result;

}

跟函数基本上差不多,不过注意的是java都是一个个对象,所以说要注意哪个方法在哪个类里。

 

b.java的特性:

java跟c++一样支持函数重载。

 

java支持传递同类型的可变参数给一个方法:

printmax(34, 3, 3, 2, 56.5);

printmax(new double[]{1, 2, 3});

 

 

 

引用: