Julia正则表达式学习笔记
什么是正则表达式?
正则表达式是用于匹配文本的模式。它们可用于验证输入、搜索替换操作以及提取需要的内容。在Julia中,RegEx类型表示正则表达式。
创建正则表达式
在Julia中,可以使用r"pattern"
语法来创建正则表达式。
例如,要创建一个匹配所有邮箱地址的正则表达式,可以这样写:
juliaCopy Codeemail_regex = r"[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}"
匹配字符串
要检查一个字符串是否与正则表达式匹配,可以使用occursin()
函数。它返回一个布尔值,表示字符串是否包含正则表达式。
例如,要检查一个字符串是否包含一个匹配所有邮箱地址的正则表达式,可以这样写:
juliaCopy Codestring = "联系我:binjie09@gmail.com"
if occursin(email_regex, string)
println("找到了邮箱地址")
else
println("没有找到邮箱地址")
end
提取匹配的字符串
要从一个字符串中提取与正则表达式匹配的部分,可以使用match()
函数。它返回一个RegexMatch
对象,其中包含有关匹配的详细信息。
例如,要从一个字符串中提取所有的电子邮件地址,可以这样写:
juliaCopy Codestring = "联系我:binjie09@gmail.com,公司邮箱为bj@company.com"
for match in eachmatch(email_regex, string)
println(match.match)
end
替换匹配的字符串
要使用另一个字符串替换与正则表达式匹配的部分,可以使用replace()
函数。
例如,要将一个字符串中的所有电子邮件地址替换为REDACTED
,可以这样写:
juliaCopy Codestring = "联系我:binjie09@gmail.com,公司邮箱为bj@company.com"
new_string = replace(string, email_regex, "REDACTED")
println(new_string)
输出结果如下:
Copy Code联系我:REDACTED,公司邮箱为REDACTED
实例
下面是一些正则表达式的示例:
[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}
匹配所有的电子邮件地址。^([01]?[0-9]|2[0-3]):[0-5][0-9]$
匹配24小时制的时间格式(如09:30
或23:59
)。^\d{4}-\d{1,2}-\d{1,2}$
匹配ISO格式的日期(如2023-6-3
)。
它们只是一些常见的示例,正则表达式可以非常复杂,可以匹配几乎任何类型的文本。