2017-06-22 8 views
1

最後の4桁のシーケンスを除くすべての文字列の正規表現が必要です。Regexは最後の4桁をすべて一致させます

abc12345 => abc1 
abc1234abc => abcabc 
abc123.45678abc => abc123.4abc 
1234abc => abc 
12345abc => 1abc 

私はたくさんのことを試しました。私が得た最も近いものは、

です。しかし最後の4分の1の後に文字がある場合、これは失敗します。

+0

どのようなプログラミング言語を使用していますか? –

答えて

0
(.*\d*)(\d{4})(.*) 

これにより、第1試合と第3試合を組み合わせることができます。

Online Regular Expressions

0

あなたが一緒に正規表現の部分を接着することができます唯一の方法は、後方参照の力を利用しています。バックリファレンスの詳細については、hereを参照してください。

は、このコードはあなたの問題を解決し、正規表現のデモhereを見ることができます:あなたはのように後方参照をカウントし、通常のブラケット()([a-z0-9.]*)に何かを置くたび

([a-z0-9.]*)\d{4}([a-z0-9]+) 

は、基本的にはこれが最初の後方参照となり、 ([a-z0-9]+)これは秒です。あなたは、たとえば、この正規表現を持っていると思った場合:あなたはそのブラケットへの後方参照を使用することができます

([a-z0-9.]*)([a-z0-9.]*) 

([a-z0-9.]*){2} 
:もちろん

([a-z0-9.]*)\1 

を、これはで簡単に解決できたことが

しかし、この場合{2}は正規表現の直後、バックリファレンスとは逆に、定義された後はどこでも使用できます。例:

([a-z0-9.]*) Continuation of regular expression \1 

あなたの質問から、どのプログラミング言語で作業しているのかは不明です。しかし、ほとんどのプログラミング言語はバックリファレンスをサポートしています。あなたがしたいことは、このような正規表現を作成し、最初と3番目の参照にアクセスし、それらを連結し、テキストを抽出することです。

関連する問題