2

我有以下字符串

Month: March 2011
Month: January 2012
Month: December 2011

我想写一个正则表达式,它只为 2011 年选择月份的名称(即“March”)。这意味着选择字符串“Month:”和年份“2011”之间的所有内容。我做的正则表达式是

^(Month:)[A-Za-z0-9]+(2011)$

但它似乎不起作用。怎么了???结果应该是“三月”和“十二月”。谢谢!

4

3 回答 3

2

使用前瞻:

/[a-z]+(?= 2011)/ig

在此处查看实际操作:http ://regex101.com/r/fE9lR9

这是一个 JavaScript 演示:http: //jsfiddle.net/rZJur/

于 2013-02-20T20:20:14.613 回答
1

它不匹配,因为您没有考虑月份和年份之间的空白。

您可以在考虑空间后捕获月份组:

^(?:Month: )([A-Za-z]+)(?: 2011)$

或者您可以使用前瞻/后视组合:

(?<=^Month: )[A-Za-z]+(?= 2011$)
于 2013-02-20T20:20:23.063 回答
1

这个表达式有效(向后看/向前看)(?<=Month\:\s)(.+?)(?=\s2011)

编辑:只有非捕获组,这有效:(?:Month\:\s)(.+?)(?:\s2011)

于 2013-02-20T20:32:53.720 回答