正则表达式选择2字符串之间的文字?

时间:2013-02-20 20:17:35

标签: regex

我有以下字符串

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

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

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

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

3 个答案:

答案 0 :(得分:1)

使用前瞻:

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

在此处查看:[{3}}

这是一个JavaScript演示:http://regex101.com/r/fE9lR9

答案 1 :(得分:1)

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

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

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

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

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

答案 2 :(得分:1)

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

编辑: 只使用非捕获组,这可以工作:(?:Month\:\s)(.+?)(?:\s2011)