问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

java正则表达式的写法

发布网友 发布时间:2022-05-05 04:25

我来回答

3个回答

热心网友 时间:2022-04-23 01:30

方法/步骤
Java正则表达式正则表达式的语法知识:Java支持Perl 5 正则表达式语法的一个子集。一个重要的问题是Java没有正则表达式常量,而是使用简单的老的字符串常量代替的。这就意味着,你需要一个的额外等级的转换。例如,正则表达式\s+不得不表示为“\\s+”这样的字符串。转义序列(Escapesequences):

\

引用后面的元字符(metacharacter) (例如 \. 匹配.) 。

\Q

引用后面所有的元字符直到遇到 \E 。

\E

停止引用元字符 (和 \Q 开始配合使用)。

\\

一个文字反斜杠\。

\uhhhh

Unicode字符 U+hhhh (16进制)。

\xhh

Unicode字符 U+00hh (16进制)。

\cx

ASCII的控制字符 ^x (比如 \cH 可以是 ^H, U+0008)。

\a

ASCII bell 字符 (U+0007)。

\e

ASCII ESC字符r (U+001b)。

\f
ASCII[size=17.280000686645508px]换页字符 (U+000c)。
\n

ASCII 换行字符 (U+000a)。

\r

ASCII 回车字符 (U+000d)。

\t

ASCII tab 字符 (U+0009)。

字符类(Characterclasses)使用集合运算来构建字符类是完全可行的:

[abc]

任意 a, b, 或 c字符。(枚举)

[a-c]

任意a-c范围的字符,即任意 a, b,或 c。 (范围)

[^abc]
除了a, b, 或 c以外的任意字符。 (否定)

[[a-f][0-9]]

任意字符,是a-f,或者0-9。 (联合)

[[a-z]&&[jkl]]

同时满足两个范围的任意字符。 (交叉)

大多数时候,构造的字符类更有用:

\d
任意数字字符。

\D
任意非数字字符。

\s
任意空白字符

\S
任意非空白字符

\w

Any word character.

\W

Any non-word character.

\p{NAME}

Any character in the class with the given NAME.

\P{NAME}

Any character not in the named class.

各种命名的类:
· Unicodecategory names, prefixed by Is. For example \p{IsLu} forall uppercase letters.
· POSIX class names. These are'Alnum', 'Alpha', 'ASCII', 'Blank', 'Cntrl', 'Digit', 'Graph', 'Lower','Print', 'Punct', 'Upper', 'XDigit'.
· Unicode block names, as usedby forName(String) prefixedby In. For example \p{InHebrew} for all characters in the Hebrewblock.
· Character method names. These areall non-deprecated methods from Character whosename starts with is, but with the is replaced by java. Forexample,\p{javaLowerCase}.

定量修饰符(Quantifiers)
定量修饰符匹配一些数量的之前提到的语法表达式。

*

0个或更多

?

0个或1个

+

1个或更多

{n}

确切的n个

{n,}

至少n个

{n,m}

至少n个,不超过m个

定量修饰符默认是贪婪的,意思是它将匹配最长可能的输入序列。也有不贪婪(又称懒惰)的定量修饰符,它匹配最小可能性的输入序列。他们在贪婪方面是一样的,除了后面的?:

*?

Zero or more (non-greedy).

??

Zero or one (non-greedy).

+?

One or more (non-greedy).

{n}?

Exactly n (non-greedy).

{n,}?

At least n (non-greedy).

{n,m}?

At least n but not more than m (non-greedy).

定量修饰符默认允许回溯。也可以避免定量修饰符的回溯。他们除了在后面的+:外,都是一样的。

*+

Zero or more (possessive).

?+

Zero or one (possessive).

++

One or more (possessive).

{n}+

Exactly n (possessive).

{n,}+

At least n (possessive).

{n,m}+

At least n but not more than m (possessive).

零宽断言(Zero-widthassertions)

^

At beginning of line.

$

At end of line.

\A

At beginning of input.

\b

At word boundary.

\B

At non-word boundary.

\G

At end of previous match.

\z

At end of input.

\Z

At end of input, or before newline at end.

四处查看断言(Look-aroundassertions)
四处查看断言主张does(positive)的子模式或doesn't(negative)匹配在(look-ahead)后面或者(look-behind)前面【也就是从当前位置向前或向后查找】不包括包含的匹配文字。向后查找模式可能匹配的最大长度必须不是不受控制的。

(?=a)

Zero-width positive look-ahead.

(?!a)

Zero-width negative look-ahead.

(?<=a)

Zero-width positive look-behind.

(?<!a)

Zero-width negative look-behind.

分组(Groups)

(a)

A capturing group.

(?:a)

A non-capturing group.

(?>a)

An independent non-capturing group. (The first match of the subgroup is the only match tried.)

\n

The text already matched by capturing group n.

查看group()的详细信息来了解如何捕捉分组是有限的和可访问的。
运算符(Operators)

ab

Expression a followed by expression b.

a|b

Either expression a or expression b.

标记(Flags)

(?dimsux-dimsux:a)

Evaluates the expression a with the given flags enabled/disabled.

(?dimsux-dimsux)

Evaluates the rest of the pattern with the given flags enabled/disabled.

标记:

i

CASE_INSENSITIVE

case insensitive matching

d

UNIX_LINES

only accept '\n' as a line terminator

m

MULTILINE

allow ^ and $ to match beginning/end of any line

s

DOTALL

allow . to match '\n' ("s" for "single line")

u

UNICODE_CASE

enable Unicode case folding

x

COMMENTS

allow whitespace and comments

任何一个flags的集合可能是空的。例如,(?i-m)可能打开字符敏感,可能关闭多线模式,(?i)可能打开字符敏感,(?-m)可能关闭多线模式。
注意,在Android中,UNICODE字符永远打开:字符不敏感的匹配永远是unicode的。
还有两个另外的标记不可设定的机制:CANON_EQ和LITERAL。
在Android中试图使用CANON_EQ会抛出异常。

实现注释(Implementationnotes)
在Android中的正则表达式实现是由ICU提供的。正则表达式的符号主要是在其他Java语言实现的超集。这就意味着目前的应用程序将如预期的正常工作。但是也有很小的可能性事,Android 可以接受的正则表达式,不能被其他实现所接受。有时候,Android将识别一个简单、特例的、能被更有效处理的正则表达式。这对String中的便利的方法和Pattern中的方法都适用。

END
注意事项
认真学习

温馨提示:亲 答题不易解题更难 您的支持是我继续答题的动力 麻烦采纳 谢谢

热心网友 时间:2022-04-23 02:48

"n\\sSBV\\sa ADV\\sd"追问这个不对,试过了

追答或者你把字符括起来呗
"[n]\\s[S][B][V]\\s[a]\\s[A][D][V]\\s[d]"

热心网友 时间:2022-04-23 04:23

".*? n( .*?) SBV( .*?) a( .*?) ADV( .*?) d( .*?)"
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
2024年9月30日遇见贵人好吗2024年9月30日是遇见贵人的黄道吉日吗 什么算助攻 肛肠疾病防治 直肠癌吃什么好? 大同肛肠癌早期怎么办 2011年放过什么电影?全一点哦 带“飞鸟”的诗句大全(190句) “飞鸟”开头的诗句 含飞鸟·的诗句 带“飞鸟”的五言诗句 java pattern 正则表达式中的 &#39;+?&#39; 和 &#39;*?&#39; 分别是什么意思 java编程基础 正则表达式 高手快进java Pattern 正则表达式问题,多谢 如何设置电脑的第一级密码 电脑的一级密码怎么设? 懂电脑配置的大侠来帮我看看这配置好不好?值多少钱 高分悬赏以下金属性质分析 怎样进入郁金香e族商城看产品 郁金香一朵花里的雌蕊和雄蕊不同时成熟,其意义是什么 钣金喷涂问题 现在配一个主机需要多少钱? SECC-N5和SECC-AF5是一个型号吗 大水牛的旗下产品 求5000-7000元的电脑配置(攒台电脑)显卡和内存要高点的 1、SGLC与SECC的性能差异,感觉SECC的强度弱很多,容易变形。 2、宝钢的SECC与小日本的SECC性能有多大差异 P5钢材多少钱一公斤 如何进行采购绩效考核之一 工作不忙碌的普通员工该如何提升个人能力? 下属员工做事能力很差,如何去提高他们的工作能力? mysql插入后的数据与原来数据不一样 java pattern 正则表达式中的 +?和 *?分别是什么意思 java正则表达式中,Pattern.matches(regex, input)和Pattern.compile(regex).matcher(input).find()的区别 在JAVA里面怎么使用正则表达式? 请问嘉兴学院的开学时间是什么时候?大神们帮帮忙 请问嘉兴学院2012届 新生开学时间是几号? 嘉兴学院2011届大一新生几号开学? 嘉兴学院下学期什么时候开学 嘉兴学院的美术方面的专业几号开学?拜托各位大神 嘉兴学院越秀校区什么时候开学 嘉兴学院南湖学院什么时候开学? 嘉兴学院南湖学院2011新生几号开学 嘉兴学院2013年的新生开学时间 玫瑰痤疮快好了,有小红点老褪不掉 嘉兴学院2011新生几号开学 日本关西旅游攻略 关西的食物好吃吗 2011年 嘉兴学院 什么时候开学 嘉兴学院南湖学院什么时候开学 浙江嘉兴学院南湖学院2010新生什么时候开学? 嘉兴学院什么时候开学啊,还有大一可不可以带笔记本啊 嘉兴学院寒假什么时候开学?土木类的