2

次の文字列があります

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

そして、2011 年の月の名前 (つまり "March") のみを選択する正規表現を書きたいと思います。これは、文字列 "Month: " と年 "2011" の間のすべてを選択することを意味します。私が作った正規表現は

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

しかし、うまくいかないようです。どうしたの???結果は「3 月」と「12 月」になります。ありがとう!

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 に答える