horizontal是什么意思

更新时间:2022-12-26 17:21:10 阅读: 评论:0


2022年12月26日发(作者:you rock my world)

java正则表达式并且条件_Java⾥正则表达式(包括⼀些⾼级

⽤法)

有些内容只有在Java⾥⾯才能使⽤。------原⽂作者:逗号(他不⾼兴发博客)

##字符种类

部分使⽤频率⼏乎为0的这⾥不会提及(⽐如x之流)

###普通

||含义|助记|

|----|-------------------------------------|-----|

|s|⾮空⽩|space|

|s|空⽩||

|d|数字|digit|

|D|⾮数字||

|[]|⾃定义字符种类可使⽤^|&&随意组合||

###特别

||含义|助记|

|-------|------------------------------------------------------------|----------|

|h|横向字符|horizontal|

|h|⾮横向字符||

|v|纵向字符(⽐如说换⾏符)|vertical|

|V|⾮纵向字符||

|w|单词字符(包括-_)|word|

|W|⾮单词字符||

|p{XXX}|POSIX,这个并不常⽤,在有些时候会⽅便,Character有很多is开头的⽅法,将⽅法名中的`is`替换为`Java`可直接使⽤

进⾏字符匹配:p{javaLowerCa}|posix|

|Q|字符转义开始符||

|E|字符转义结束符,这两个符号之间的内容全部按照字⾯量处理,⾥⾯是所有字符都不会有什么含义,⽐如.就是.,s必须匹配s,

⽽不是匹配空⽩。||

##量词

||含义|助记|

|-----|-------------|----|

|?|0个或者1个||

|*|0个或多个||

|+|1个或多个||

|{m}|m个||

|{m,n}|介于m~n个之间||

`?`修饰在量词之后,表尽可能少的匹配!

##边界

###普通

||含义|助记|

|----|------------|----|

|^|字符开始位置||

|$|字符结束位置||

###特别

||含义|助记|

|----|------------------------------|----|

|b|单词边界,单词的最前⾯和最后⾯||

|B|⾮字符串边界||

下⾯的内容普通⼈基本上就已经不管了!

##分组捕获

正则表达式中,每出现⼀对括号就是新建了个新的组。⽐如:`(w+)|(d+)`

正则表达式的组可以⽤使⽤索引进⾏引⽤,形式为:`$index`

`$0`默认指向原来的全部字符

然后索引递增规律如下:

`((a)|(bc))`

`$1`指向`((a)|(bc))`匹配的内容

`$2`指向`(a)`匹配的内容

`$3`指向`(bc)`匹配的内容

然⽽当正则复杂之后,改动将会对索引有较⼤影响,也不⽅便计算索引,此时,你可以为组制定名称:

⽐如匹配字符串:`a=123,b=456`中间的键值,使⽤索引,需要写成:`(w+)=(S+)`,然后使⽤`$1`指向key,使⽤`$2`指向

value。

我们可以将正则改为:`(?w+)=(?S+)`,上述表达式使⽤`?`的形式在正则中为组定义名称。

##引⽤分组

在Java中,你可以在两种地⽅使⽤引⽤:

*正则表达式中

匹配`xxx-xxx`字符`-`两边的内容相同,使⽤索引引⽤前⾯的组(`index`):

```regexp

(w+)-1

```

使⽤名字引⽤前⾯的组:

```regexp

(?w+)-k

```

*在Java的字符串替换中

Markdown中的字符串转为斜线的html:

```java

"*name*".replaceAll("*(?w+)*","$1")

"*name*".replaceAll("*(?w+)*","${content}")

```

##模式

你可以在构造`Pattern`时设定模式:

```Java

e("abc",_INSENSITIVE)

```

模式可以⾃⾏到`Pattern`下查看,这⾥只说使⽤⽅式,在组开头使⽤`?flags:`的⽅式声明模式,⽐如:

匹配单词,不区分⼤⼩写

```regex

(?i:w+)

```

记住`i`(忽略⼤⼩写)、`s`(.匹配全部字符)即可,其他基本不⽤。

##前瞻后顾

前瞻后顾,是正则表达式中的⾼级技巧,主要有5种:

>注意:虽然这货也有括号,但是这货只算个条件,并不会捕获任何内容,也不会影响索引

###前瞻

前瞻中不带`

*`exp1(?=exp2)`

寻找后⾯是exp2的exp1

*`exp1(?!exp2)`

###后顾

*`(?<=exp1)exp2`

匹配exp1后⾯的exp2,前⾯没有exp1的内容将被忽略,⽐如,替换`abcba`替换`c`后⾯的`b`为`xxx`,需要写为:

```java

"abcba".replaceAll("(?<=c)b","xxx")

```

`a`后⾯的`b`则不受影响。

>注意:正则表达式`(?<=c)b`不会匹配字符串`cb`,意思就是:

>

>```java

>asrtFal("cb".matches("(?<=c)b"));

>asrtFal("b".matches("(?<=c)b"));

>asrtTrue("cb".matches("c(?<=c)b"));

>```

*`(?

后顾中带有`

##⽜⼑⼩试

以下所有内容只能使⽤`String#repalceAll`或者`String#matches`完成。

###⼿机号遮罩

将`11`位⼿机号除前4位之外,其他的使⽤`*`替换。

###格式化数字

例如:`1234567890`使⽤正则替换之后,变为`1,234,567,890`。

###Trim字符串

使⽤正则去除字符串开始和结束的空⽩字符。

###去除数字结尾的`0`

`1234.4500`应该处理为`1234.45`,`1234.00`应该处理为`1234`。

###处理⽂档

将字符串的`*测试***测试**`的使⽤单个`*`包围的内容两边分别加上`

`、`

`,不能影响两个`**`包围的内容。

###测试某个字符串是不是合法的Java标识符

###测试`IPv4`

已知`IPv4`中每⼀段的数字需要介于0~255,测试某个字符串是否是合法的`IPv4`表达式。

###去除`//`注释

已知`Java`中可以使⽤`//`进⾏单⾏注释,请去除⼀段代码中的这种注释。

###去除`/*内容*/`注释

已知`Java`中可以使⽤`/**/`进⾏多⾏注释,请去除代码中的这种注释。

本文发布于:2022-12-26 17:21:10,感谢您对本站的认可!

本文链接:http://www.wtabcd.cn/fanwen/fan/90/35003.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图