首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正则表达式仅将月份、日期和年份与特定要求匹配。

正则表达式仅将月份、日期和年份与特定要求匹配。
EN

Stack Overflow用户
提问于 2014-01-08 05:56:08
回答 3查看 424关注 0票数 0

我有以下日期:

代码语言:javascript
复制
@"August 25-27, 2013"

@"June 5-9, 2013"

@"May 20, 2014"

我需要一个正则表达式,它给我的输出如下:

代码语言:javascript
复制
@"August 25 2013"

@"June 5 2013"

@"May 20 2014"
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-01-08 06:10:34

Regex字符串

(\w{3,}) (\d+).*?(\d{4})

替换串

$1 $2 $3

奖金!

这里也是一个非常具体的版本,将只提取月份名称(包括3个字母,月份名称,即。一月,二月,三月,十一月)第一位。

(?<month>(?:Jan(:?uary)?)|(?:Feb(:?ruary)?)|(?:Mar(:?ch)?)|(?:Apr(:?il)?)|(?:May)|(?:Jun(:?e)?)|(?:Jul(:?y)?)|(?:Aug(:?ust)?)|(?:Sep(:?tember)?)|(?:Oct(:?ober)?)|(?:Nov(:?ember)?)|(?:Dec(:?ember)?)) (?<day>\d+).*?(?<year>\d{4})

它使用命名捕获,以便将替换文本更改为:

${month} ${day} ${year}

票数 2
EN

Stack Overflow用户

发布于 2014-01-08 06:15:35

Regex匹配是原始字符串的子字符串,在一次匹配中不会得到期望的结果,您将得到两次匹配,级联将产生所需的结果。我建议用空字符串代替不必要的东西。为此,您可以使用:

代码语言:javascript
复制
((\-\d+)?,)
票数 0
EN

Stack Overflow用户

发布于 2014-01-08 06:26:53

代码语言:javascript
复制
echo "August 25-27, 2013" | sed -e "s/\\-[0-9]*//" -e "s/,//"

产出:2013年8月25日

代码语言:javascript
复制
echo "June 5-9, 2013" | sed -e "s/\\-[0-9]*//" -e "s/,//"

产出:2013年6月5日

代码语言:javascript
复制
echo "May 20, 2014" | sed -e "s/\\-[0-9]*//" -e "s/,//"

产出:2014年5月20日

在我的os x 10.9上运行

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20988007

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档