Julia正则表达式学习笔记

什么是正则表达式?

正则表达式是用于匹配文本的模式。它们可用于验证输入、搜索替换操作以及提取需要的内容。在Julia中,RegEx类型表示正则表达式。

创建正则表达式

在Julia中,可以使用r"pattern"语法来创建正则表达式。

例如,要创建一个匹配所有邮箱地址的正则表达式,可以这样写:

juliaCopy Code
email_regex = r"[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}"

匹配字符串

要检查一个字符串是否与正则表达式匹配,可以使用occursin()函数。它返回一个布尔值,表示字符串是否包含正则表达式。

例如,要检查一个字符串是否包含一个匹配所有邮箱地址的正则表达式,可以这样写:

juliaCopy Code
string = "联系我:binjie09@gmail.com" if occursin(email_regex, string) println("找到了邮箱地址") else println("没有找到邮箱地址") end

提取匹配的字符串

要从一个字符串中提取与正则表达式匹配的部分,可以使用match()函数。它返回一个RegexMatch对象,其中包含有关匹配的详细信息。

例如,要从一个字符串中提取所有的电子邮件地址,可以这样写:

juliaCopy Code
string = "联系我:binjie09@gmail.com,公司邮箱为bj@company.com" for match in eachmatch(email_regex, string) println(match.match) end

替换匹配的字符串

要使用另一个字符串替换与正则表达式匹配的部分,可以使用replace()函数。

例如,要将一个字符串中的所有电子邮件地址替换为REDACTED,可以这样写:

juliaCopy Code
string = "联系我: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:3023:59)。
  • ^\d{4}-\d{1,2}-\d{1,2}$ 匹配ISO格式的日期(如2023-6-3)。

它们只是一些常见的示例,正则表达式可以非常复杂,可以匹配几乎任何类型的文本。