这是什么?
这是常见问答的集合。这也是一个社区维基,因此邀请每个人参与维护它。
这是为什么呢?
正则表达式正在遭受给我 ze 代码类型的问题和没有解释的糟糕答案。此参考旨在提供指向高质量问答的链接。
范围是什么?
此参考适用于以下语言:php,perl,javascript,python,ruby,java,.net。
这可能过于宽泛,但这些语言共享相同的语法。对于特定功能,其背后有语言标签,例如:
- 什么是正则表达式平衡组? .net
堆栈溢出正则表达式常见问题解答
另请参阅正则表达式标签详细信息页面上的许多一般提示和有用链接。
<小时 />在线教程
- 正则表达式一 ↪
- 正则表达式信息 ↪
量词
- 零或多:
*
:贪婪,*?
:不情愿,*+
:p僵化 - 一个或多个:
+
:贪婪,+?
:不情愿,++
:p骨化 -
?
:可选(零或一) - 最小/最大范围(全包):
{n,m}
:在 n 和 m 之间,{n,}
:n 或更多,{n}
:正好 n - 贪婪、不情愿(又名"懒惰"、"不贪婪")和占有量词之间的区别:
- 贪婪 vs. 不情愿 vs. 占有欲量词
- 深入探讨贪婪与非贪婪的区别
{n}
和{n}?
有什么区别- 有人可以向我解释占有量词吗? php, perl, java, ruby
- 模拟所有格量词 .net
- 非堆栈溢出引用:来自 Oracle,regular-expressions.info
字符类
- 方括号和括号有什么区别?
-
[...]
:任何一个字符,[^...]
:否定/任何字符,但 -
[^]
匹配任何一个字符,包括换行符 JavaScript -
[w-[d]]
/[a-z-[qz]]
: 设置减法 .net, xml-schema, xpath, JGSoft -
[w&&[^d]]
:设置交集Java,Ruby 1.9+,javascript(带v
标志) -
[[:alpha:]]
:P OSIX 字符类 -
[[:<:]]
和[[:>:]]
单词边界 - 为什么
[^\D2]
、[^[^0-9]2]
、[^2[^0-9]]
在Java中得到不同的结果? - 速记:
- 数字:
d
:d igit,D
:非数字 - 单词字符(字母、数字、下划线):
w
:单词字符,W
:非单词字符 - 空格:
s
:空格,S
:非空格
- 数字:
- Unicode 类别(
p{L}, P{L}
等)
转义序列
- 水平空格:
h
:空格或制表符,t
:制表符 - 换行符:
-
r
,n
:回车和换行 -
R
:通用换行 PHP Java-8
-
- 否定的空格序列:
H
:非水平空格字符,V
:非垂直空格字符,N
:非换行符 pcre php5 java-8 - 其他:
v
:垂直制表符,e
:转义字符
锚
锚 | 比赛 | 口味 |
---|---|---|
^ |
字符串的开头 | 常见* |
^ |
行首 | 常见m |
$ |
行尾 | 常见m |
$ |
文末 | 常见*,但 JavaScript 除外 |
$ |
字符串的末尾 | JavaScript*, PHP D |
A |
字符串的开头 | 除 JavaScript 外常见 |
Z |
文末 | 除了javascript python之外的常见 |
Z |
字符串的末尾 | 蟒 |
z |
字符串的末尾 | 除了javascript python之外的常见 |
b |
字边界 | 常见 |
B |
不是单词边界 | 常见 |
G |
上一场比赛结束 | 除了javascript,python之外常见 |