package
0.0.0-20240828052546-079cc6e6950d
Repository: https://github.com/kokoiruby/go_learning.git
Documentation: pkg.go.dev
# README
Regexp
正则表达式 Regexp 是一种描述文本模式 pattern 的语言,使用特定的语法和规则来定义匹配字符串的规则。
通过正则表达式,可以搜索、替换、验证和解析文本中的特定子串。
Syntax
-
字符类:
[abc]
:匹配 'a'、'b' 或 'c' 中的任意一个字符。[^abc]
:匹配不在 'a'、'b' 和 'c' 中的任意字符。[a-z]
:匹配任意一个小写字母。[A-Z]
:匹配任意一个大写字母。[0-9]
:匹配任意一个数字字符。
-
预定义字符类:
.
:匹配除换行符以外的任意单个字符。\d
:匹配任何一个数字字符,相当于[0-9]
。\D
:匹配任何一个非数字字符,相当于[^0-9]
。\w
:匹配任何一个字母、数字或下划线字符,相当于[a-zA-Z0-9_]
。\W
:匹配任何一个非字母、数字或下划线字符,相当于[^a-zA-Z0-9_]
。\s
:匹配任何一个空白字符(包括空格、制表符等)。\S
:匹配任何一个非空白字符。
-
量词:
-
*
:匹配前面的字符零次或多次。a*
:匹配零个或多个 'a'。
-
+
:匹配前面的字符一次或多次。a+
:匹配一个或多个 'a'。
-
?
:匹配前面的字符零次或一次。a?
:匹配零个或一个 'a'。
-
{n}
:匹配前面的字符恰好 n 次。a{3}
:匹配三个 'a'。
-
{n,}
:匹配前面的字符至少 n 次。a{2,}
:匹配至少两个 'a'。
-
{n,m}
:匹配前面的字符至少 n 次,至多 m 次。a{2,4}
:匹配二到四个 'a'。
-
-
位置匹配:
-
^
:匹配字符串的开头。 -
$
:匹配字符串的结尾。 -
\b
:匹配一个单词边界。\bword\b
:匹配完整的单词 'word'。
-
\B
:匹配非单词边界。
-
-
分组和捕获:
-
()
:将括号内的表达式作为一个分组,匹配分组内容并捕获。(abc)
:匹配并捕获 'abc'。
-
(?:...)
:非捕获组,只进行匹配但不捕获。(?:abc)
:匹配 'abc' 但不捕获。
-
(?=...)
:正向前瞻,匹配前面的位置,后面的内容必须匹配。a(?=b)
:匹配 'a',前提是后面跟着 'b'。
-
(?!...)
:负向前瞻,匹配前面的位置,后面的内容必须不匹配。a(?!b)
:匹配 'a',前提是后面不跟着 'b'。
-
# email
[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}
# phone#
\d{3}-\d{3}-\d{4}
# ip
\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b
# URL
https?://[^\s/$.?#].[^\s]*
# yyyy-mm-dd
\b\d{4}-\d{2}-\d{2}\b
# HH:MM:SS
\b\d{2}:\d{2}:\d{2}\b
Common
Regexp.FindString:输入文本中查找第一个匹配正则表达式的字符串,并返回该匹配字符串。
Regexp.FindAllString:输入文本中查找所有匹配正则表达式的字符串,返回该匹配字符串。
Regexp.FindAllStringIndex:输入文本中查找所有匹配正则表达式的字符串,返回该匹配字符串的索引。
Regexp.ReplaceAllString:替换输入文本中查找所有匹配正则表达式的字符串,返回替换后的文本。
Regexp.FindStringSubmatch:查找第一个匹配正则表达式的字符串及其子匹配项,返回一个包含匹配项的切片。
Regexp.Expand:使用模板字符串生成新的字节切片。
Regexp.ExpandString:使用模板字符串生成新的字节切片,处理字符串。