惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

D
Darknet – Hacking Tools, Hacker News & Cyber Security
V
Vulnerabilities – Threatpost
Cloudbric
Cloudbric
G
GRAHAM CLULEY
S
Securelist
Schneier on Security
Schneier on Security
Help Net Security
Help Net Security
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Project Zero
Project Zero
Spread Privacy
Spread Privacy
P
Privacy International News Feed
C
Cyber Attacks, Cyber Crime and Cyber Security
Cisco Talos Blog
Cisco Talos Blog
T
Tailwind CSS Blog
博客园_首页
有赞技术团队
有赞技术团队
Simon Willison's Weblog
Simon Willison's Weblog
Stack Overflow Blog
Stack Overflow Blog
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Latest news
Latest news
T
Tor Project blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Attack and Defense Labs
Attack and Defense Labs
www.infosecurity-magazine.com
www.infosecurity-magazine.com
O
OpenAI News
J
Java Code Geeks
T
Tenable Blog
K
Kaspersky official blog
AWS News Blog
AWS News Blog
S
Security @ Cisco Blogs
The GitHub Blog
The GitHub Blog
T
Threatpost
月光博客
月光博客
H
Heimdal Security Blog
Security Latest
Security Latest
The Hacker News
The Hacker News
Y
Y Combinator Blog
A
Arctic Wolf
Apple Machine Learning Research
Apple Machine Learning Research
C
Cisco Blogs
美团技术团队
Microsoft Security Blog
Microsoft Security Blog
Hugging Face - Blog
Hugging Face - Blog
T
The Blog of Author Tim Ferriss
C
CERT Recently Published Vulnerability Notes
D
Docker
Google Online Security Blog
Google Online Security Blog
D
DataBreaches.Net
V
Visual Studio Blog
H
Help Net Security

博客园 - 台风

让员工学会学习 - 台风 - 博客园 我们需要个性突出的员工吗? 为什么不提供离线Blog管理工具呢? 收集积累员工的技能数据和项目经验数据很重要 Web程序中要注意的安全问题 - 台风 - 博客园 如何对Web Application进行安全性评估 项目管理中的组织结构 Migration项目总结 Auditor and Audit Stakeholder Anaylysis 项目的沟通管理 风险的应对策略 项目管理技能 维护项目阶段总结 Six sigma tools 持续过程改进 - 公司过程能力持续提高的保证 对PMR, PM and audit的一些想法 Variables Control Charts (计量值控制图) Attribute Control Charts(计数值控制图)
规则表达式(笔记) - 台风 - 博客园
台风 · 2005-09-02 · via 博客园 - 台风

 规则表达式提供了这样一种机制, 我们可以用来从字符串中匹配特定字符串. 如今规则表达式已经是一个ISO标准.

规则表达式是一种内容无关的语法. 下面来解释它的一些基本操作符.

1. 字符匹配操作符
.  匹配任何一个字符. 如".ord"可以匹配"lord", "cord", "2ord"等等.
[] 匹配任何一个在中括弧中列出的字符. 如"[a-z]ord"可以匹配"aord", "bord", "ford"等等.
 如果在[]中使用-,就表示某个范围, 其前后两个字符号是范围的边界.
[^] 匹配任何一个不在中括弧中列出的字符. 如"[ab]ord"可以匹配"cord", "dord", 但不能匹配"aord", "bord".
 
2. 重复操作符
? 匹配任何字符一次,如果这个字符号存在的话. 如"?erd"可以匹配"erd","aerd","berd"等等.
* 匹配声明的字符零到多次. 如“n.*rd” 可以匹配“nerd”, “nrd”, “neard”等等.
+ 匹配声明的字符至少一次. 如“[n]+erd” 可以匹配“nerd”, “nnerd”,但不能匹配“erd”.
{n} 匹配声明的字符n次. 如“[a-z]{2}erd” 可以匹配“cherd”, “blerd”, etc. but not “nerd”, “erd”, “buzzerd”.
{n,} 匹配声明的字符至少n次. 如“.{2,}erd” 可以匹配“cherd” and “buzzerd”, 但不能匹配“nerd”.
{n,m} 匹配声明的字符n到m次. 如“n[e]{1,2}rd” 可以匹配“nerd” and “neerd”.

3. 定位操作符
^ 一行的开始位置
$ 一行的结束位置
\< 某个单词的开始位置
\> 某个单词的结束位置
\b 某个单词的开始位置 或者 结束位置
\B 某个单词的中间位置

4. 组合操作符
() 表示()内是几个规则表达式的组合. 如“([a]|[]b)erd"匹配"aerd","berd".

交替操作符
| 匹配|前后两组规则表达式. 如“([a]|[]b)erd"匹配"aerd","berd".

保留字
以下这些字符在规则表达式语法中是有特殊意义的字符,不能被直接当字符来使用. 这些字符被称为保留字.
^ (carat)
. (period)
[ (left bracket} 
] (right bracket}
$ (dollar sign)
( (left parenthesis)
) (right parenthesis)
| (pipe)
* (asterisk)
+ (plus symbol)
? (question mark)
{ (left curly bracket, or left brace)
} (right curly bracket, or right brace)
\ backslash
如果想使用保留字作为实际字符来使用,需要在该保留字前面加反斜线blackslash(\)

在一些unix工具中,一般用正斜杠slash(/)包围所描述的规则表达式,如[A-Z]+(abc|xyz)*/
某些规则表达式工具或某些语言中还定义了一些转义的字符,比如\w 代表空白字符,\d 代表数字,就相当于定义了[ ]和[0-9]的快捷方式. 当使用具体大工具或语言的规则表达式时,要去了解这些特定的定义.

下面以Java中规则表达式为例, 演示如何在Java中使用规则表达式.
1. 匹配字符串是否 
    Pattern.mateches("[[0-9]{2}","00");  #return true
    Pattern.mateches("[[0-9]{2}","a00");  #return false
    Pattern.mateches("[[a-z0-9]*","a00");  #return true