php正则表达式是啥?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php正则表达式是啥?相关的知识,希望对你有一定的参考价值。
是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。
给定一个正则表达式和另一个字符串,我们可以达到如下的目的:
1. 给定的字符串是否符合正则表达式的过滤逻辑(称作“匹配”);
2. 可以通过正则表达式,从字符串中获取我们想要的特定部分。
正则表达式的特点是:
1. 灵活性、逻辑性和功能性非常的强;
2. 可以迅速地用极简单的方式达到字符串的复杂控制。
3. 对于刚接触的人来说,比较晦涩难懂。
由于正则表达式主要应用对象是文本,因此它在各种文本编辑器场合都有应用,小到著名编辑器EditPlus,大到Microsoft Word、Visual Studio等大型编辑器,都可以使用正则表达式来处理文本内容。 参考技术A 所有语言的正则表达式都基本相同的,不知道你想知道哪个正则表达式,用来验证什么? 参考技术B http://www.sundxs.com/baike/4587.html 正则表单式详解 参考技术C 和js的差不多 参考技术D 百度一下你就知道!
参考 - 这个正则表达式是啥意思?
【中文标题】参考 - 这个正则表达式是啥意思?【英文标题】:Reference - What does this regex mean?参考 - 这个正则表达式是什么意思? 【发布时间】:2022-01-16 17:18:43 【问题描述】:这是什么?
这是常见问答集。这也是一个社区 Wiki,因此邀请所有人参与维护它。
这是为什么?
regex 正在遭受 give me ze code 类型的问题和没有任何解释的糟糕答案。此参考旨在提供高质量问答的链接。
范围是多少?
此参考适用于以下语言:php、perl、javascript、python、ruby、java、.net。
这可能过于宽泛,但这些语言共享相同的语法。对于特定的功能,它背后有语言的标签,例如:
什么是正则表达式平衡组? .net【问题讨论】:
I created a meta discussion, everyone is invited >>> 【参考方案1】:堆栈溢出正则表达式常见问题解答
在regextag details page 上还可以查看很多一般提示和有用的链接。
在线教程
RegexOne ↪ Regular Expressions Info ↪量词
零个或多个:*
:greedy、*?
:reluctant、*+
:possessive
一个或多个:+
:greedy、+?
:reluctant、++
:possessive
?
:optional (zero-or-one)
最小/最大范围(包括所有):n,m
:between n & m、n,
:n-or-more、n
:exactly n
贪婪、不情愿(又名“懒惰”、“不贪婪”)和所有格量词之间的区别:
Greedy vs. Reluctant vs. Possessive Quantifiers
In-depth discussion on the differences between greedy versus non-greedy
What's the difference between n
and n?
Can someone explain Possessive Quantifiers to me? php, perl, java, ruby
Emulating possessive quantifiers.net
非堆栈溢出参考:来自Oracle、regular-expressions.info
字符类
What is the difference between square brackets and parentheses?[...]
:任何一个字符,[^...]
:否定/任何字符,但
[^]
matches any one character including newlinesjavascript
[\w-[\d]]
/ [a-z-[qz]]
:设置减法.net,xml-schema,xpath,JGSoft
[\w&&[^\d]]
: set intersectionjava,ruby1.9+
[[:alpha:]]
:POSIX 字符类
[[:<:]]
和 [[:>:]]
字边界
Why do [^\\D2]
, [^[^0-9]2]
, [^2[^0-9]]
get different results in Java?java
简写:
数字:\d
:digit,\D
:non-digit
单词字符(字母、数字、下划线):\w
:word character、\W
:non-word character
空白:\s
:whitespace,\S
:non-whitespace
Unicode categories (\pL, \PL
, etc.)
转义序列
水平空白:\h
:space-or-tab, \t
:tab
换行符:
\r
, \n
:carriage return and line feed
\R
:generic newlinephpjava-8
否定的空白序列:\H
:Non horizontal whitespace character, \V
:Non vertical whitespace character, \N
:Non line feed characterpcrephp5java-8
其他:\v
:vertical tab、\e
:the escape character
锚点
^
:start of line/input, \b
:word boundary, and \B
:non-word boundary, $
:end of line/input
\A
:start of input, \Z
:end of input php, perl, ruby
\z
:the very end of input(Python 中的\Z
).net,php,pcre,java,ruby,icu,swift,objective-c
\G
:start of match php, perl, ruby
(另见“Flavor-Specific Information → Java → The functions in Matcher
”)
群组
(...)
:capture group, (?:)
:non-capture group
Why is my repeating capturing group only capturing the last match?
\1
:backreference and capture-group reference, $1
:capture group reference
What's the meaning of a number after a backslash in a regular expression?
\g<1>123
:How to follow a numbered capture group, such as \1
, with a number?:python
What does a subpattern (?i:regex)
mean?
What does the 'P' in (?P<group_name>regexp)
mean?
(?>)
:atomic group 或 independent group, (?|)
:branch reset
Equivalent of branch reset in .NET/C#.net
命名的捕获组:
General named capturing group reference at regular-expressions.info
java: (?<groupname>regex)
: Overview 和 naming rules (非堆栈溢出链接)
其他语言:(?P<groupname>regex)
python、(?<groupname>regex)
.net、(?<groupname>regex)
perl、(?P<groupname>regex)
和(?<groupname>regex)
php
环顾四周
前瞻:(?=...)
:positive、(?!...)
:negative
向后看:(?<=...)
:positive、(?<!...)
:negative
后向限制:
Lookbehinds need to be constant-lengthphp,perl,python,ruby
Lookarounds of limited length 0,n
java
Variable length lookbehinds are allowed.net
后视替代方案:
Using \K
php, perl (Flavors that support \K
)
Alternative regex module for Pythonpython
The hacky way
JavaScript negative lookbehind equivalents External link
修饰符
flag | modifier | flavors |
---|---|---|
a |
ASCII | python |
c |
current position | perl |
e |
expression | php perl |
g |
global | most |
i |
case-insensitive | most |
m |
multiline | php perl python javascript .net java |
m |
(non)multiline | ruby |
o |
once | perl ruby |
S |
study | php |
s |
single line | ruby |
U |
ungreedy | php r |
u |
unicode | most |
x |
whitespace-extended | most |
y |
sticky ↪ | javascript |
其他:
|
:alternation (OR) operator, .
:any character, [.]
:literal dot character
What special characters must be escaped?
控制动词(php 和 perl):(*PRUNE)
、(*SKIP)
、(*FAIL)
and (*F)
php 仅限:(*BSR_ANYCRLF)
递归(php 和 perl):(?R)
,(?0)
and (?1)
,(?-1)
,(?&groupname)
常见任务
Get a string between two curly braces:...
Match (or replace) a pattern except in situations s1, s2, s3...
How do I find all YouTube video ids in a string using a regex?
验证:
互联网:email addresses、URLs(主机/端口:regex 和 non-regex 替代品)、passwords
数字:a number、min-max ranges (such as 1-31)、phone numbers、date
使用正则表达式解析 HTML:请参阅“一般信息 > 何时不使用正则表达式”
高级正则表达式-Fu
字符串和数字: Regular expression to match a line that doesn't contain a word How does this PCRE pattern detect palindromes? Match strings whose length is a fourth power How does this regex find triangular numbers? How to determine if a number is a prime with regex? How to match the middle character in a string with regex? 其他: How can we match a^n b^n? 匹配嵌套括号 Using a recursive pattern php, perl Using balancing groups.net “Vertical” regex matching in an ASCII “image” List of highly up-voted regex questions on Code Golf How to make two quantifiers repeat the same number of times? An impossible-to-match regular expression:(?!a)a
Match/delete/replace this
except in contexts A, B and C
Match nested brackets with regex without using recursion or balancing groups?
风味特定信息
(标有*
的除外,此部分包含非堆栈溢出链接。)
java.util.regex.Matcher
中函数的区别:
matches()
): 匹配必须锚定到 input-start 和 -end
find()
): 匹配可能在输入字符串(子字符串)中的任何位置
lookingAt()
: 匹配必须仅锚定到输入开始
(对于一般的锚点,请参阅“锚点”部分)
唯一接受正则表达式的java.lang.String
函数:matches(s)
、replaceAll(s,s)
、replaceFirst(s,s)
、split(s)
、split(s,i)
*An (opinionated and) detailed discussion of the disadvantages of and missing features in java.util.regex
.NET
How to read a .NET regex with look-ahead, look-behind, capturing groups and back-references mixed together?
官方文档:
Boost 正则表达式引擎:General syntax、Perl syntax (由 TextPad、Sublime Text、UltraEdit 使用,...???)
JavaScript general info 和 RegExp object
.NETMySQLOraclePerl5 version 18.2
PHP:pattern syntax,preg_match
Python:Regular expression operations、search
vs match
、how-to
锈:crate regex
,struct regex::Regex
Splunk:regex terminology and syntax 和 regex command
Tcl:regex syntax,manpage,regexp
command
Visual Studio Find and Replace
一般信息
(标有*
的链接是非堆栈溢出链接。)
可能导致正则表达式引擎失败的正则表达式示例
Why does this regular expression kill the Java regex engine?工具:测试者和解释者
(此部分包含非 Stack Overflow 链接。)
在线(*包括更换测试仪,+包括拆分测试仪):
Debuggex(还有一个有用的正则表达式存储库)javascript,python,pcre *Regular Expressions 101 php, pcre, python, javascript Regex Pal, regular-expressions.info javascript RubularrubyRegExrRegex Herodotnet *+ regexstorm.net .net * RegexPlanet:Java 987654600 @,Go 987654602 @,Haskell 987654604 @,JavaScript 987654606 @,.NET 987654608 @,Perl 987654610 php PCRE php, Python python, Ruby ruby, XRegExp xregexpfreeformatter.com
xregexp
*+regex.larsolavtorvik.com
php PCRE 和 POSIX,javascript
Refiddle javascript ruby .net
离线:
Microsoft Windows:RegexBuddy(分析)、RegexMagic(创建)、Expresso(分析、创建、免费)【讨论】:
相关:the question for which an answer 以 "You can't parse [X]HTML with regex." 开头。 Perl 有更多(例如(?(
用于条件),但您可以阅读 perl 官方文档。以上是关于php正则表达式是啥?的主要内容,如果未能解决你的问题,请参考以下文章