2011-12-09 14 views
0

としてこれをで一致するにはどうすればよい: 私は正規表現の式Iは、次の文字の任意の組み合わせにマッチする正規表現を使って文字列に一致するにはどうすればよい

Y M D 

であることを、以下の文字列が一致する必要があります...ただし、これらの文字は連続していれば一致していなければなりません。一致するはずの文字は、一致するはずです。正規表現とは何でしょうか?行の

+0

これらのどれも私が探しているものではありません。私は "Y"、 "M"、 "D"の文字の組み合わせを含む部分文字列をマッチさせたい(そして抽出したい)ので、Y、M、Dの文字だけを抽出したい。任意の数、任意の組み合わせにすることができますが、Y、M、またはD文字が連続した文字列に含まれている限り、その連続した文字列を抽出します。だから私の例では、返される値は "YYYYMMDD"、 "YYMMDD"、 "YYYYDDMM"、 "YYDD"、 "DD"、 "MMYYDD"になります。 – GregH

+0

私はその部分を抽出したいと思ったら正規表現は ([YMD] +)/ – GregH

+0

私の最初の例は/ [YMD] {2、}/'でしたか?私はそれがあなたが求めているものとまったく同じだと思います。 1文字(2以上ではない)にもマッチしたい場合を除き、あなたが正しいとすれば '/ [YMD] + /'。 – Wiseguy

答えて

1

つ以上のYM、またはD(例えば、MYDD、又はYD)?

/[YMD]{2,}/ 

Refiddle example


またはそれら個々の文字のいずれかが(すなわち、YYMM、またはDD)行に2回以上発生した場所、あなたは意味ですか?

# one of [YMD] followed by another one of whichever letter matched 

/([YMD])(?=\1)/ 
+0

YMDの後ろに[YMD]が何回も続いているとはどういう意味ですか? – GregH

+0

@GregHリテラル 'YMD'の後ろに' Y'、 'M'、または' D'文字(none?を含む)が続きますか? '/ YMD [YMD] * /'を試してください。 – Wiseguy

0

私は日付形式のマッチングへの類似性に惑わされ、あなたがしたいことを自分の言葉であなたを取ることはありません:あなたはまた、lookaheadbackreferenceで少し空想を得ることができる

/Y{2,}|M{2,}|D{2,}/ 

文字列にYとMとDが任意の順序で含まれている場合に一致させる。

この:'(?=.*M)(?=.*Y)(?=.*D)'

肯定先読みアサーションを使用しました。

+0

この正規表現がどのように正確に動作するかについての説明を含むコメントをここに入力できますか? – GregH

関連する問題