-1

因此,我遇到了需要正则表达式来匹配 Month DD, YYYY 的美国格式,以便从我正在处理的网站上的日期中删除括号。我在谷歌搜索时没有看到太多有用的信息,所以我想我会发布这个问题以及我在这里提出的解决方案。

格式是这样开始的:

(2013 年 1 月 1 日)

并且需要:

2013 年 1 月 1 日

添加到问题文本:我想出的原始解决方案:

\(([A-Z]{1}[a-z]+)\W+([0-9]{2})\W+([0-9]{4})\)

和选择的答案,我比我自己更喜欢:

\(([A-Z][a-z]+\s+\d{1,2},\s+\d{4})\)
4

3 回答 3

2
\\(([A-Z]{1}[a-z]+)\W+([0-9]{2})\W+([0-9]{4})\\)

分解它:

\\\(- 转义左括号

( -开始我“保存”月份以在替换中使用的点

[A-Z]{1}-匹配一个大写字母(因为月份是代名词和所有)

[a-z]+ - 这是为了匹配单词的其余部分

) -结束我“保存”月份以用于替换的点

\W+- 使用它来定位月份名称和以下数字之间的空白区域

([0-9]{2})- 匹配并“保存”任何 2 位数字,这将由我的 DD

\W+ - DD 和 YYYY 之间的匹配空间

([0-9]{4}) -匹配我的年份,YYYY

\\)- 转义右括号

于 2013-07-24T15:58:48.797 回答
1

尝试这个:

\(([A-Z][a-z]+\s+\d{1,2},\s+\d{4})\)

使用组 1 获取不带括号的值。

红字

于 2013-07-24T17:24:17.237 回答
0
\((\w+ [0-9]{1,2}, [0-9]{2,4})\)

如果 PHP:

preg_replace('#\((\w+ [0-9]{1,2}, [0-9]{2,4})\)#','$1',$dateStr);
于 2013-07-24T16:04:20.020 回答