计算机语言语法和翻译笔记1:正则表达式 符号规则使用浅析和总结

以下是我自己对正则表达式(regular expression)一些符号还有规则的浅显总结

有一个很好的网站能检验是否曲配和找最长的符合的表达式为:http://regex101.com/


基本定义:

解释

解释

备注

ab

Concatenation

 

a | b

OR

 

a*

EMPTY OR MORE

空或多个

贪婪性(尽可能多的取配符合的pattern

a+

1 OR MORE

1个或多个

贪婪性

a?

NONE OR 1

空或1

贪婪性

 + OR *? OR

懒惰性(与贪婪性正好相反 失败了 就回溯表达式)

Matching a HTML tag:(ex<HTML>

before

<.+>

After:

<.+?>  OR  <.*?>

惰性代替方案

一个贪婪重复与一个取反字符集

不用回溯

Even better:

<[^>]+>

 

 

 

 

缩写:

 

 

 

.

ALL THE CHARS

所有字符

 

\d OR \\d

ANY DIGIT

所有数字

[0-9]                 

\D

NEG of(\d)

除数字之外

[^0-9]

\w

WORD

单词

[a-zA-Z_0-9]

\W

NEG (\w)

处单词之外

[^\w]

\s

ESCAPE SEQ.

逃离顺序符

[  \t\n\x0B\f\r] 注意有空格

\S

NEG (\s)

除了逃离顺序符之外的

[^\s]

 

 

 

 

边界:

 

 

 

^

START

锚:开始

 

$

END

锚:尾

 

\b

WORD BOUNDARY

单词边界**(需注意其判明机制)

 

\B

NEG (\b)

除单词边界之外的

 

 

 

 

 

括号,否定和其他

 

 

 

\

LITERALS

转义**

[  , \ ,  ^  , - ,"  , . , " , ]

(ab)

"()"TREAT AS A GROUP

小括号表示集体

 

[ab]

OR *ONLY MATCHING CHAR

中括号表示或者

 

[^ab]

NEG OF (a|b)

中括号里面加插入号表示“非”

 

[a-z]

RANGE

破折号表示区间

 

&&

INTERSECTION * FOR BOLLEAN RELATION

&&”表示共有的

 

[a,b]

 TO SEPARATE? * NOT SURE

逗号用于区分

 

((?!xxxx).)*     if then

NEGATIVE LOOK AROUND?* ADVANCED USAGE

?(A)B|C)IF A THEN B ELSE C.

(?(A)B) IF A THEN B

 

详情:http://ocpsoft.org/opensource/guide-to-regular-expressions-in-java-part-2/

http://www.rexegg.com/regex-conditionals.html

 

 

 

 

 

重复特定的一个字符:

 

 

 

X{N}

MATCH X EXACTLY N TIMES

取配单个字符X 正好M

 

X{N,}

AT LEAST N TIMES

至少N

 

X{N,M}

AT LEAST N TIMES BUT NO MORE THEN M TIMES

至少N 最多不超过M

 

 

 

 

 

需要注意的地方:

 

 

 

java 转义时要多加一个“\

\\

 

 

[(ab)(ba)]

"[]"WOULD NOT WORK FOR STRING

中括号不适合字符串的应用

 

[(ab)(bc)] ?= [a,b,b,c]

SAME THING

同上

 

ab|ba OR (ab|ba)

THIS IS PORPER USE FOR STING

正确用字符串

 

[^a-z]

NOT a to z

 

 

[^abc]

Not a OR b OR c

 

 

"\\"   ->  "\\\\"

FOR JAVA

 

 

[a-z&&[def]]

INTERSECTION *BE CAREFULL

满足a-z同时满足def 其实就是d|e|f

 

[a-d[m-p]]

UNION

或,ad或者mp

 

[a-z&&[^bc]]

SUBTRACTION

除了bc之外从az

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值