此问题的答案为community effort。编辑现有答案以改进此帖子。当前不接受新答案或互动。
这是什么?
这是一个常见问答的集合。这也是一个社区Wiki,所以每个人都被邀请参与维护它。
为什么会这样?
regex正在遭受 * 给予我ze代码 * 类型的问题和没有解释的糟糕答案。此参考旨在提供质量问答的链接。
范围是什么?
此引用适用于以下语言:第一个两个两个两个两个一个、第一个三个两个、第一个四个两个、第一个五个两个、第一个六个两个、第一个七个两个、第一个八个两个。
这可能太宽泛了,但这些语言共享相同的语法。对于特定的功能,后面有语言的标记,例如:
- 什么是正则表达式平衡组?.net
1条答案
按热度按时间vaqhlq811#
堆栈溢出正则表达式常见问题
也可以在regextag details page上看到很多一般性的提示和有用的链接。
*
:greedy、*?
:reluctant、*+
:possessive+
:greedy、+?
:reluctant、++
:possessive?
:optional (zero-or-one){n,m}
:between n & m、{n,}
:n-or-more、{n}
:exactly n{n}
and{n}?
[...]
:任意一个字符,[^...]
:求反/任何字符,但[^]
matches any one character including newlines个javascript个[\w-[\d]]
/[a-z-[qz]]
:设置减影.net、xml-schema、xpath、JGSoft[[:alpha:]]
:POSIX字符类[[:<:]]
和[[:>:]]
字边界[^\\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\p{L}, \P{L}
, etc.)\h
:space-or-tab、\t
:tab\r
,\n
:carriage return and line feed\R
:generic newline x phpjava-8\H
:Non horizontal whitespace character,\V
:Non vertical whitespace character,\N
:Non line feed character x pcrephp5java-8\v
:vertical tab、\e
:the escape character| 锚|火柴|香料|
| - ------|- ------|- ------|
|
^
|字符串开头|共同 *||
^
|线的起点|普通x1米43米1x||
$
|行结束|普通x1米45英寸1x||
$
|正文结束|常见 *,javascript除外||
$
|字符串的最末尾|javascript *、php和D
||
\A
|字符串开头|常见,javascript除外|| x1米50英寸|正文结束|常见,但javascriptpython除外|
|
\Z
|字符串的最末尾|python||
\z
|字符串的最末尾|除javascriptpython以外的通用||
\b
|字边界|普通||
\B
|不是单词边界|普通||
\G
|上一个匹配结束|常见,但javascript、python除外|| 期限|定义|
| - ------|- ------|
| Start of string|在字符串的开头。|
| Start of line|在字符串的开头,以及在非终止行终止符之后。|
| Very end of string|在绳子的最末端。|
| End of text|在绳子的最末端,在终端线路终结器处。|
| End of line|在绳子的最末端,在行终止符处。|
| Word boundary|在前面没有单词字符的单词字符处,并且在前面没有非单词字符的非单词字符处。|
| End of previous match|在先前设定的位置,通常是前一场比赛结束的位置。如果未设置位置,则返回字符串的开头。|
"常见"是指:icu个java个javascript个.net个objective-c个pcre个perl个php个python个swift个ruby个
m
多行模式。|D
美元端仅模式。(...)
:capture group、(?:)
:non-capture group\1
:backreference and capture-group reference,$1
:capture group reference\g<1>123
:How to follow a numbered capture group, such as\1
, with a number?:python(?i:regex)
mean?(?P<group_name>regexp)
mean?(?>)
:atomic group或independent group、(?|)
:branch resetregular-expressions.info
(?<groupname>regex)
:Overview和命名规则 (非堆栈溢出链接)(?P<groupname>regex)
python、(?<groupname>regex)
、.net、(?<groupname>regex)
、perl、(?P<groupname>regex)
和(?<groupname>regex)
以及php(?=...)
:positive、(?!...)
:negative(?<=...)
:positive、(?<!...)
:negative\K
php、perl和(Flavors that support\K
)| 旗|修饰符|香料|
| - ------|- ------|- ------|
|
a
|ASCII|python||
c
|current position|perl||
e
|expression|php个perl个||
g
|global|大部分||
i
|case-insensitive|大部分||
m
|multiline|第一个电子147帧第一个电子148帧第一个电子149帧第一个电子150帧第一个电子151帧第一个电子152帧第一个||
m
|(non)multiline|ruby||
o
|once|perl个ruby个||
r
|non-destructive|perl||
S
|study|php||
s
|single line|ruby||
U
|ungreedy|php个r个||
u
|unicode|大部分||
x
|whitespace-extended|大部分||
y
|sticky ↪|javascript|How to convert preg_replace e to preg_replace_callback?
What are inline modifiers?
What is '?-mix' in a Ruby Regular Expression
第一个电子174个第一个,第一个电子175个第一个,第一个电子176个
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
字符串和数字:
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 CMatch nested brackets with regex without using recursion or balancing groups?
(除了标有
*
的链接外,本节包含非堆栈溢出链接。)*java
正式文件:Pattern Javadoc ↪、Oracle's regular expressions tutorial ↪
java.util.regex.Matcher
中函数之间的差异:matches()
):匹配必须同时锚定到input-start和-endfind()
):匹配项可以位于输入字符串(子字符串)中的任何位置lookingAt()
:匹配必须仅定位到input-start唯一接受正则表达式的
java.lang.String
函数:x1米119英寸1 x英寸、x1米120英寸1 x英寸、x1米121英寸1 x英寸、x1米122英寸1 x英寸、x1米123英寸1 x英寸. NET语言
How to read a .NET regex with look-ahead, look-behind, capturing groups and back-references mixed together?
正式文件:
Boost正则表达式引擎:General syntax、Perl syntax(用于文本板、升华文本、UltraEdit等)
JavaScript语言general info和RegExp object
.NET x
MySQL
Oracle
Perl5 version 18.2
PHP:文件系统扩展
Python:Regular expression operations、
search
与match
、how-torust eclipse :crate
regex
,structregex::Regex
Splunk:正则表达式术语和语法以及regex command
触摸屏:regex syntax、manpage、
regexp
commandVisual Studio Find and Replace
(标记为
*
的链接是非堆栈溢出链接。)*其他一般文档资源:Learning Regular Expressions、* Regular-expressions.info、* Wikipedia entry、* RexEgg、Open-Directory Project
DFA versus NFA
Generating Strings matching regex
书籍:杰弗里·弗里德的 * Mastering Regular Expressions *
何时 * 不 * 使用正则表达式:
不要使用正则表达式解析HTML:
Don't、
和Please, just don't
Well, maybe...if you're really determined(此问题的其他答案也不错)
Why does this regular expression kill the Java regex engine?
(此部分包含非堆栈溢出链接。)*
在线
(* includes replacement tester, + includes split tester)
:Debuggex(也有一个有用的正则表达式存储库)javascript、python、pcre
个1英寸270英寸1 x,* 个1英寸271英寸1 x * 个1英寸272英寸1 x
Rubular x ruby
RegExr
Regex Herodotnet
freeformatter.com
xregexpregex.larsolavtorvik.com
php个人计算机资源和POSIX,javascript离线:
微软 windows :RegexBuddy(分析)、RegexMagic(创建)、Expresso(分析、创建、自由)
MySQL 8.0:做了很多语法上的修改。特别注意在某些上下文中反斜杠的加倍。(这个答案需要进一步编辑以反映不同之处。)