regex 正则
resource
- regex101: build, test, and debug regular expressions.
?<=
及 ?=
?<=
: 匹配以字符串开始,捕获 (存储)
?=
: 匹配以字符串结束,捕获 (存储)
正则表达式:
-
(?<=(href=")).{1,200}(?=(">))
: 捕获以href="
开头的字符串最长达到 200 个字符且以">
结尾的字符串
解释:
-
(?<=(href="))
: 匹配以href="
开头的字符串,并且捕获 (存储) 到分组中 -
(?=(">))
: 匹配以">
结尾的字符串,并且捕获 (存储) 到分组中
示例如下:
?<=(?:)
: 匹配以字符串开始,不 捕获 (存储)
?=(?:)
: 匹配以字符串结束,不 捕获 (存储)
正则表达式:
-
(?<=(?:href=")).{1,200}(?=(?:">))
解释:
-
(?<=(?:href="))
: 匹配以href="
开头的字符串,并且不捕获 (不存储) 到分组中 -
(?=(?:">))
: 匹配以">
结尾的字符串,并且不捕获 (不存储) 到分组中
参考教程:
^
和 $
在正则表达式中,^
表示字符串的开头,$
表示字符串的结尾。
例如,要匹配以 hello
开头的字符串,可以使用正则表达式 ^hello
。要匹配以 world
结尾的字符串,可以使用正则表达式 world$
。
在使用正则表达式时,还需要注意转义字符的使用。例如,如果要匹配以.
开头的字符串,可以使用正则表达式 \.
,其中 \
是转义字符,用于将.
转义为普通字符。
下面是一些示例正则表达式,用于匹配字符串的开头和结尾:
-
^hello
:匹配以 hello 开头的字符串。 -
world$
:匹配以 world 结尾的字符串。 -
^\d+
:匹配以数字开头的字符串。 -
^[a-zA-Z]+
:匹配以字母开头的字符串。 -
\.txt$
:匹配以.txt 结尾的字符串。
(?<name>pattern)
命名捕获分组用于将捕获的内容存储到一个变量中,具体访问遵循特定的语言标准。
-
(?<year>\\d{4})-(?<month>\\d{2})-(?<day>\\d{2})
: 将捕获的内容存储到变量year
、month
和day
中
在 Python 中,可以使用 groupdict () 方法来获取一个字典,其中键是捕获组的名称,值是捕获组的值。
1 | import re |
在 C 中,标准库的正则表达式库 <regex>
不直接支持命名捕获组的语法。但可以使用第三方库,如 Boost.Regex
,来实现命名捕获组的功能。以下是使用 Boost.Regex在
C 中实现命名捕获组的示例:
1 |
|