「java正则通配符」Java 正则匹配

博主:adminadmin 2022-11-25 00:43:06 47

本篇文章给大家谈谈java正则通配符,以及Java 正则匹配对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

java正则表达式是什么?

java正则表达式是计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。

在编写处理字符串的程序或网页时,经常会有查找符合某些复杂规则的字符串的需要。正则表达式就是用于描述这些规则的工具。换句话说,正则表达式就是记录文本规则的代码。

很可能你使用过Windows/Dos下用于文件查找的通配符(wildcard),也就是*和?。如果你想查找某个目录下的所有的Word文档的话,你会搜索*.doc。在这里,*会被解释成任意的字符串。

和通配符类似,正则表达式也是用来进行文本匹配的工具,只不过比起通配符,它能更精确地描述你的需求——当然,代价就是更复杂——比如你可以编写一个正则表达式,用来查找所有以0开头,后面跟着2-3个数字,然后是一个连字号“-”,最后是7或8位数字的字符串(像010-12345678或0376-7654321)。

正则表达式的基本操作:

正则表达式定义:符合一定规则的表达式。

作用:用于专门操作字符串。

特点:用于一些特定的符号来表示一些代码操作。这样就简化书写。所以学习正则表达式,就是在学习一些特殊符号的使用。

好处:可以简化对字符串的复杂操作。

弊端:符号定义越多,正则越长,阅读性越差。

正则通配符规则

通配符匹配规则:

* :任意数量的字符

?:任何单个字符

正则 匹配规则:

*                前面元素出现0次以上

.                匹配任何单个字符

?                前面元素出现0次或1次

+                前面元素出现1次以上

^                表示开头。

$                表示结尾。

.*                表示0个以上的任意字符。

.+                表示1个以上的任意字符。

[ ]              范围描述符。[a-z]表示从a到z之间的任意一个。

\w                英文字母和数字。即[0-9 A-Z a-z]。

\W                非英文字母和数字

\s                空字符,即[\t\n\r\f]。

\S                非空字符。

\d                数字,即[0-9]。

\D                非数字。

\b                词边界字符(在范围描述符外部时)

\B                非词边界字符

\b                退格符(0x08)(在范围描述符内部时)

{m,n}            前面元素最少出现m次,最多出现n次

|                或者,如.(你|我|他),爱你、爱我、爱他这三个词语都会被匹配到(爱对应括号前面那个点,你我他则是括号里的或)

( )              子文本,如(\d+)([你|我|他]),取子匹配文本(1,1)取到的就是第一个圆括里面的内容。

其他字符          该字符本身

您可以将正则匹配理解为特殊的关键词搜索,您可以使用某些符号来代替一个或多个未知的内容。

java 通配符匹配字符串

第一步实现含?而不含*的 字符串匹配,如对dd?的匹配

第二步,实现含有* 的字符串的匹配,如abc* dd?,主要思路是用* split 字符串,分为两个有效的串,abc, dd?

然后使用步骤一种的方法来查看匹配到的index.

/**

* 找出含?的字符串

* @return

*/

public int checkSubPattern(String src,int begin,String pat){

boolean isFound=true;

if(src.length()-begin pat.length()){return -1;}

for(int i=begin;isrc.length()-pat.length()+1;i++){

for(int j=0;jpat.length();j++){

if(pat.charAt(j)!='?' src.charAt(i+j)!=pat.charAt(j)){

isFound =false;

break;

}

isFound = true;

}

if(isFound){return i;}

}

return -1;

}

public boolean checkStar(String src,String pat){

String[] sub_p = pat.split("\\*");

int begin =0;

for(int i=0;i sub_p.length;i++){

begin = checkSubPattern(src,begin,sub_p[i]);

System.out.println(begin);

if(begin==-1){return false;}

if(i==0 pat.charAt(i)!='*' begin!=0){return false;}

if((i==sub_p.length-1) pat.charAt(i)!='*'

begin!=(src.length()-

sub_p[i].length())){return false;}

}

return true;

}

正则表达式

正则表达式(Regular Expression) 正则表达式是一种字符特征的描述方式,用来在文本中匹配到用户想要的东西.

正则表达式与通配符:

1.正则表达式一般用于处理文本内容,常用命令有grep,sed,awk,vim等

通配符一般用于匹配文件名,常用命令有find,ls,cp等

2.各符号的含义不尽相同.

什么地方使用正则表达式

vim grep sed awk nginx apache mail垃圾邮件过滤。。。 perl java python 等等都使用正则

构成

1.元字符(基本元字符、扩展元字符)

2.除元字符之外的任意字符都是表示他字面意思的正则表达式

正则表达式的匹配过程

正则表达式是按照从表达式最左端第一个字符开始,左到右依次一个一个字符进行匹配.当字符串中有字符成功匹配到正则表达式中字符,则从这个位置开始尝试正则表达式中的下一个字符进行匹配,如果匹配成功则继续从这个位置开始匹配正则表达式中下一个字符;如果匹配不成功,则“回溯”到第一次匹配的字符处重新从正则表达式中第一个字符开始匹配。

特征

贪婪匹配

基本元字符

1.字符匹配

** . 任意单个字符**

** [] []内的任意单个字符**

** [ a-z] 任意单个小写字母**

** [a-zA-z] [0-9] [a-zA-z0-9]**

[^0-9]除了数字外的任意当个字符

[a-z]小写字母

[0-9]数字

[A-Z]大写字母

[a-zA-Z]所有字母

[^a-zA-Z0-9]所有符号

次数匹配

** * 匹配前面的字符重复****0次****到多次 *

{****n****}****匹配前面的字符重复任意次数

{n,m}前面的字符重复n次到m次

{,n} 前面的字符最多重复n次

{n,} 前面的字符最少重复n次

** 位置匹配**

^ 行首

$ 行尾

词首

词尾

扩展元字符****Extended Metacharacters (egrep and awk)

sed -r

?? 前面的字符重复0次或1次

{} 次数匹配意义同基本元素中的{}

|或着

() 分组

\数字 引用分组的内容

前向: 在正则中引用

后向: 在其他地方引用, \0表示引用模式中所有的内容 \0 ⇔

hehello

llllo

llheo

hellhello

hellohello

编写正则表达式的3 个步骤****:

1 知道要匹配的内容以及它如何出现在文本中。

2 编写一个模式来描述要匹配的内容

3 测试模式来查看它匹配的内容,不能错,不能漏,不能多

练习: head /etc/passwd /tmp/pass

1. 删除每行的第一个字符

2. 在每行行首插入hello

3. 删除每行的第二个字符

4. 把每个数字用()括起来 如:(1)(2)

5. 把每个数值用()括起来 如:(12)

6. 删除每行的倒数第二个字符

7. 交换每行的第一个和最后一个字符

8. 删除刚好三个字符的单词

9. 把ro或da替换成A

思考:

1. 删除每行的第一个单词(纯字母)

2. 交换第一个和倒数第二个单词(纯字母)

POSIX字符类

点击这里点击这里

[:digit:]任何数字

[:xdigit:]任何十六进制数字

[:alpha:]任何字母

[:lower:]任何小写字母

[:upper:]任何大写字母

[:alnum:]任何字母或数字

[:cntrl:]ASCII控制字符(ASCII 0~31 和 ASCII 127)

[:punct:]不属于[:alnum:]和[:cntrl:]的任何字符

[:blank:]空格或制表符([\t ])

[:space:]任何空白字符,包括空格([\f\n\r\t\v ])

[:print:]任何可打印字符

[:graph:]同[:print:],但不包括空格

java正则通配符的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于Java 正则匹配、java正则通配符的信息别忘了在本站进行查找喔。

The End

发布于:2022-11-25,除非注明,否则均为首码项目网原创文章,转载请注明出处。