2017-11-20 9 views
-6

QR8.4_Z4J25の正規表現をシェルスクリプトに書きたいのですか?どうすればいいですか?私の文字列の正規表現を書くには?

これは間違いありませんか?

[QR][0-9][.][0-9][_][A-Z][0-9][A-Z][0-9][0-9] 
+1

これは間違いありませんか?違う。 '[QR]'はQまたはRと一致しませんQR –

+0

正規表現では角括弧の意味を知っていますか? '[QR]'は 'Q'か' R'のどちらかを意味するので、おそらく部分文字列 'QR'と一致することはできません。 – Xufox

+0

これは非常に簡単で、おそらくRegExを必要としません。今あなたには2つの問題があります。 – iBug

答えて

1

それだけQ8.4_Z4J25またはR8.4_Z4J25と一致しますので、それは明らかに間違っているのですが、ないQR8.4_Z4J25

ブラケットはあなたが書くしたいので、指定した任意の1文字一致します

[Q][R][0-9][.][0-9][_][A-Z][0-9][A-Z][0-9][0-9] 

1文字に角括弧を使用する必要はないため、簡略化して

にすることができます
QR[0-9]\.[0-9]_[A-Z][0-9][A-Z][0-9][0-9] 

と一致するので、ブラケットの外側にある場合は、ドットをエスケープしてください。のいずれかの文字。

あなたにもQR9.1_8A9YKを一致させたい場合には、あなたが、その後、通常使用しているツールにオプション-Eを供給することにより、Extented正規表現を使用している場合、あなたは

QR[0-9]\.[0-9]_[A-Z0-9]\{5\} 

にそれを変更する必要があります

QR[0-9]\.[0-9]_[A-Z0-9]{5} 
+0

'{'または '} '文字をエスケープしないでください。 – Soviut

+0

@Svuit BREでは、あなたはEREであなたはしないでください。 – iBug

-1

大カッコは正規表現で文字の集合を表します。

  • [MX_5]Mある1つの文字、X_または5と一致します。
  • [0-9]は、09の間にある1文字に一致します。
  • [a-z]は、小文字のazの間にある1文字に一致します。

パターンに注意してください。角カッコは1文字に一致します。複数の文字を一致させるには、一致する文字数を示すには、+または*または{}が続く必要があります。

しかし、あなたの場合は実際の文字のQRをこの順番で一致させたいので、角括弧を使用しないでください。

QR[0-9]\.[0-9]_[A-Z][0-9][A-Z][0-9][0-9] 

いつも同じ場所にあるアンダースコアのように同じことが起こります。 .\でエスケープされていたことに注意してください。正規表現では特別な意味があるためです。

大括弧で囲まれた複数の文字に戻って、最後の5文字の順序が重要でない場合は、単一の角括弧と{}を使用して式をさらに減らし、アンダースコア。

QR[0-9]\.[0-9]_[A-Z0-9]{5} 
+0

BREまたはERE?私はBREのために中括弧をエスケープしました。 – iBug

+0

@iBug何をお話していますか?あなたは正規表現の中括弧をエスケープする必要はありません。 – Soviut

+0

[Wikipedia](https://en.m.wikipedia.org/wiki/Regular_expression#Standards)を参照してください。* BREとEREは連携して動作します。 EREは '?'、 '+'、 '|'を追加し、BREで**必要とされるメタキャラクタ '()'と '{}' **をエスケープする必要性を排除します。*** – iBug