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

推荐订阅源

Google DeepMind News
Google DeepMind News
Attack and Defense Labs
Attack and Defense Labs
S
Security Affairs
P
Palo Alto Networks Blog
Webroot Blog
Webroot Blog
P
Privacy International News Feed
H
Hacker News: Front Page
www.infosecurity-magazine.com
www.infosecurity-magazine.com
C
Cybersecurity and Infrastructure Security Agency CISA
Recent Commits to openclaw:main
Recent Commits to openclaw:main
T
The Blog of Author Tim Ferriss
T
Threat Research - Cisco Blogs
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Spread Privacy
Spread Privacy
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Schneier on Security
Schneier on Security
Jina AI
Jina AI
Simon Willison's Weblog
Simon Willison's Weblog
Scott Helme
Scott Helme
A
About on SuperTechFans
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Recorded Future
Recorded Future
F
Fortinet All Blogs
PCI Perspectives
PCI Perspectives
Google DeepMind News
Google DeepMind News
T
Troy Hunt's Blog
MyScale Blog
MyScale Blog
I
InfoQ
F
Full Disclosure
宝玉的分享
宝玉的分享
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Security Archives - TechRepublic
Security Archives - TechRepublic
Latest news
Latest news
W
WeLiveSecurity
月光博客
月光博客
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
N
Netflix TechBlog - Medium
量子位
P
Proofpoint News Feed
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
GbyAI
GbyAI
SecWiki News
SecWiki News
AI
AI
The Last Watchdog
The Last Watchdog
Hacker News - Newest:
Hacker News - Newest: "LLM"
G
GRAHAM CLULEY
N
News and Events Feed by Topic
K
Kaspersky official blog
V2EX - 技术
V2EX - 技术

博客园 - 台风

让员工学会学习 - 台风 - 博客园 我们需要个性突出的员工吗? 为什么不提供离线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