这个正则表达式是什么意思?
这是什么?
这是一个常见Q&A的集合。 这也是一个社区Wiki,所以每个人都被邀请参与维护它。
为什么是这样?
正则表达式正在遭受give me ze code无法解释的give me ze code类型的问题和糟糕的答案。 此参考资料旨在提供质量问答链接。
范围是什么?
此参考针对以下语言:php,perl,javascript,python,ruby,java,.net。
这可能太宽泛,但这些语言共享相同的语法。 具体功能有它背后的语言标签,例如:
堆栈溢出正则表达式常见问题
在线教程
量词
* :贪婪, *? :不情愿, *+ :所有格 + :贪婪, +? :不情愿, ++ :占有欲 ? :可选(零或一) {n,m} :在n和m之间, {n,} :n或更多, {n} :正好n {n}和{n}?之间有什么区别{n}? 字符类
[...] :任何一个字符, [^...] :否定/任何字符,但 [^]匹配任何一个字符,包括换行符javascript [w-[d]] / [az-[qz]] :设置减法.net,xml-schema,xpath,JGSoft [w&&[^d]] :设置交集java,ruby 1.9+ [[:alpha:]] :POSIX字符类 [^D2] , [^[^0-9]2] , [^2[^0-9]]在Java中得到不同的结果? java的 d :数字, D :非数字 w :单词字符, W :非单词字符 s :空白, S :非空白 p{L}, P{L}等) 转义序列
h :空格或制表符, t :制表符 r , n :回车和换行 R :通用换行符php H :非水平空格字符, V :非垂直空格字符, N :非换行字符pcre php5 java-8 v :垂直制表符, e :转义字符 锚
^ :行/输入开始, b :字边界,和B :非字边界, $ :行结束/输入 A :输入开始, Z :输入php,perl,ruby结束 z :输入的结尾(Python中的Z ).net,php,pcre,java,ruby,icu,swift,objective-c G :开始匹配php,perl,ruby (另请参阅“风味特定信息→Java→ Matcher的函数”)
组
(...) :捕获组, (?:) :非捕获组 1 :反向引用和捕获组引用, $1 :捕获组引用 g<1>123 :如何使用数字?:python跟随编号的捕获组,例如1 (?i:regex)是什么意思? (?P<group_name>regexp)中的'P'是什么意思? (?>) :原子组或独立组, (?|) :分支重置 regular-expressions.info命名了捕获组引用 (?<groupname>regex) :概述和命名规则(非堆栈溢出链接) (?P<groupname>regex) python, (?<groupname>regex) .net, (?<groupname>regex) perl, (?P<groupname>regex)和(?<groupname>regex) php Lookarounds
(?=...) :正面, (?!...) :负面 (?<=...) :正面, (?<!...) :负面(不受javascript支持) {0,n}变形 K php,perl(支持K Flavors) 修饰符
g :全局, i :不区分大小写, u :unicode, x :空白扩展 c :当前位置perl e :表达式php perl o :一次红宝石 m :multiline php perl python javascript .net java, m :(非)多行ruby s :单线,(不是由JavaScript或红宝石支持) s变通方法的javascript S :学习php U :ungreedy php r 其他:
| :交替(OR)运算符, . :任何字符, [.] :文字点字符 (*PRUNE) , (*SKIP) , (*FAIL)和(*F) (*BSR_ANYCRLF) (?R) , (?0)和(?1) , (?-1) , (?&groupname) 常见任务
{...} 先进的正则表达式
(?!a)a this除了在上下文A,B和C 风味特定信息
(除了标有*部分,本节包含非堆栈溢出链接。)
java.util.regex.Matcher函数的区别: matches() ):匹配必须锚定到input-start和-end find() ):匹配可能在输入字符串中的任何地方(子字符串) lookingAt() :匹配必须仅限于input-start java.lang.String函数: matches(s) , replaceAll(s,s) , replaceFirst(s,s) , split(s) replaceFirst(s,s) split(s) , split(s,i) java.util.regex中的缺点和缺少的特性(斟酌和详细讨论) preg_match search vs match ,操作方法 regexp命令 一般信息
(标有*链接是非堆栈溢出链接。)
可能导致正则表达式引擎失败的正则表达式示例
工具:测试人员和解释人员
(本节包含非堆栈溢出链接。)
在线(*包括更换测试仪,+包括分体测试仪):
freeformatter.com xregexp regex.larsolavtorvik.com php PCRE和POSIX,JavaScript 离线:
