我有以下字符串
Month: March 2011
Month: January 2012
Month: December 2011
我想写一个正则表达式,它只为 2011 年选择月份的名称(即“March”)。这意味着选择字符串“Month:”和年份“2011”之间的所有内容。我做的正则表达式是
^(Month:)[A-Za-z0-9]+(2011)$
但它似乎不起作用。怎么了???结果应该是“三月”和“十二月”。谢谢!
我有以下字符串
Month: March 2011
Month: January 2012
Month: December 2011
我想写一个正则表达式,它只为 2011 年选择月份的名称(即“March”)。这意味着选择字符串“Month:”和年份“2011”之间的所有内容。我做的正则表达式是
^(Month:)[A-Za-z0-9]+(2011)$
但它似乎不起作用。怎么了???结果应该是“三月”和“十二月”。谢谢!
使用前瞻:
/[a-z]+(?= 2011)/ig
在此处查看实际操作:http ://regex101.com/r/fE9lR9
这是一个 JavaScript 演示:http: //jsfiddle.net/rZJur/
它不匹配,因为您没有考虑月份和年份之间的空白。
您可以在考虑空间后捕获月份组:
^(?:Month: )([A-Za-z]+)(?: 2011)$
或者您可以使用前瞻/后视组合:
(?<=^Month: )[A-Za-z]+(?= 2011$)
这个表达式有效(向后看/向前看)(?<=Month\:\s)(.+?)(?=\s2011)
。
编辑:只有非捕获组,这有效:(?:Month\:\s)(.+?)(?:\s2011)