2

月の日付のような部分文字列を文字列の「21st」または「22nd」または「23rd」と一致させたいので、次のパターンを使用して正規表現を作成しました。

((\d{1,2})(st)|(nd)|(rd)|(th)). 

私は置き換えをしたいので、これらのグループを作りました。しかし、「Monday March 21st 2012」のような文字列に一致すると、常に 2 つのサブ文字列に一致します。Mo'nd'ay March '21st' 2012.

なぜ「Mo'nd'ay」と一致するのか混乱していますか?

4

2 に答える 2

2

括弧のセットが欠落しているためです。試す:

 ((\d{1,2})((st)|(nd)|(rd)|(th)))

あなたが持っていたものは、一致しました:

     (\d{1,2})(st)
  OR (nd)
  OR (rd)
  OR (th)
于 2012-04-18T02:26:03.433 に答える
2

s の周りに正しい括弧がありません|。がありますが((\d{1,2})(st)|(nd)|(rd)|(th))、次のものが必要です: (\d{1,2})(st|nd|rd|th)

nd文字列、rdth、または (1 つまたは 2 つの数字の後に) を一致させていますst

于 2012-04-18T02:26:42.923 に答える