【发布时间】:2022-01-07 22:30:36
【问题描述】:
我想将“My String 2022-01-07”之类的字符串提取日期部分到命名捕获中。
我尝试了以下正则表达式,但它仅在完全匹配时才有效:
# Does not work
iex> Regex.named_captures(~r/(?<date>\$?(\d{4}-\d{2}-\d{2})?)/, "My String 2021-01-01")
%{"date" => ""}
# Works
iex> Regex.named_captures(~r/(?<date>\$?(\d{4}-\d{2}-\d{2})?)/, "2021-01-01")
%{"date" => "2021-01-01"}
我也试过这个,没有运气:
iex> Regex.named_captures(~r/([a-zA-Z0-9 ]+?)(?<date>\$?(\d{4}-\d{2}-\d{2})?)/, "My String 2021-01-01")
%{"date" => ""}
当您不关心日期周围的字符时,有没有办法使用命名捕获来提取字符串的日期部分?
我想我正在寻找一个可以像这样工作的正则表达式:
iex> Regex.named_captures(REGEX???, "My String 2021-01-01 Other Parts")
%{"date" => "2021-01-01"}
【问题讨论】: