2024-04-19 18:24:58 发布
网友
我需要一个regex,它能够匹配所有的但是一个以特定模式开头的字符串(特别是index.php和后面的内容,比如index.php?id=2342343)
index.php
index.php?id=2342343
不是regexp专家,但我认为您可以从一开始就使用否定的lookahead,例如^(?!foo).*$不应该匹配以foo开头的任何内容。
^(?!foo).*$
foo
您可以将^放在字符集的开头,以匹配除这些字符以外的任何字符。
^
[^=]*
将匹配除=之外的所有内容
=
Regex:match everything但是:
world.
|
cat
(cat)|[^c]+(?:c(?!at)[^c]*)*|(?:c(?!at)[^c]*)+[^c]*
演示说明:新行\n用于演示中的否定字符类内,以避免与相邻行的匹配溢出。测试单个字符串时不需要它们。
\n
锚注:在许多语言中,使用\A定义字符串的明确开头,使用\z(在Python中,它是\Z,在JavaScript中,$可以)定义字符串的最末端。
\A
\z
\Z
$
点注释:在许多类型中(但不是POSIX、TRE、TCL),.匹配任何char字符,但匹配换行符。确保使用相应的DOTALL修饰符(/s在PCRE/Boost/.NET/Python/Java中,以及/m在Ruby中)来匹配.的任何字符,包括换行符。
.
/s
/m
反斜杠注释:在必须用允许转义序列的C字符串声明模式的语言中(例如换行符的\n),需要将转义特殊字符的反斜杠加倍,以便引擎可以将它们视为文本字符(例如,在Java中,world\.将被声明为"world\\.",或者使用字符类:"world[.]")。使用原始字符串文字(Pythonr'\bworld\b')、C逐字字符串文字@"world\.",或者使用斜线字符串/正则表达式文字符号,如/world\./。
world\.
"world\\."
"world[.]"
r'\bworld\b'
@"world\."
/world\./
不是regexp专家,但我认为您可以从一开始就使用否定的lookahead,例如
^(?!foo).*$
不应该匹配以foo
开头的任何内容。您可以将
^
放在字符集的开头,以匹配除这些字符以外的任何字符。将匹配除
=
之外的所有内容Regex:match everything但是:
foo
开头):world.
):foo
的字符串不匹配)(没有符合POSIX的patern,对不起):|
符号的字符串):foo
):cat
之外的任何文本):^{(cat)|[^c]+(?:c(?!at)[^c]*)*|(?:c(?!at)[^c]*)+[^c]*
)然后使用语言检查意味着:如果组1匹配,则不是我们需要的,否则,如果不为空,则获取匹配值|
:^{演示说明:新行
\n
用于演示中的否定字符类内,以避免与相邻行的匹配溢出。测试单个字符串时不需要它们。锚注:在许多语言中,使用
\A
定义字符串的明确开头,使用\z
(在Python中,它是\Z
,在JavaScript中,$
可以)定义字符串的最末端。点注释:在许多类型中(但不是POSIX、TRE、TCL),
.
匹配任何char字符,但匹配换行符。确保使用相应的DOTALL修饰符(/s
在PCRE/Boost/.NET/Python/Java中,以及/m
在Ruby中)来匹配.
的任何字符,包括换行符。反斜杠注释:在必须用允许转义序列的C字符串声明模式的语言中(例如换行符的
\n
),需要将转义特殊字符的反斜杠加倍,以便引擎可以将它们视为文本字符(例如,在Java中,world\.
将被声明为"world\\."
,或者使用字符类:"world[.]"
)。使用原始字符串文字(Pythonr'\bworld\b'
)、C逐字字符串文字@"world\."
,或者使用斜线字符串/正则表达式文字符号,如/world\./
。相关问题 更多 >
编程相关推荐