最後の4桁のシーケンスを除くすべての文字列の正規表現が必要です。Regexは最後の4桁をすべて一致させます
abc12345 => abc1
abc1234abc => abcabc
abc123.45678abc => abc123.4abc
1234abc => abc
12345abc => 1abc
私はたくさんのことを試しました。私が得た最も近いものは、
です。しかし最後の4分の1の後に文字がある場合、これは失敗します。
最後の4桁のシーケンスを除くすべての文字列の正規表現が必要です。Regexは最後の4桁をすべて一致させます
abc12345 => abc1
abc1234abc => abcabc
abc123.45678abc => abc123.4abc
1234abc => abc
12345abc => 1abc
私はたくさんのことを試しました。私が得た最も近いものは、
です。しかし最後の4分の1の後に文字がある場合、これは失敗します。
あなたが一緒に正規表現の部分を接着することができます唯一の方法は、後方参照の力を利用しています。バックリファレンスの詳細については、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番目の参照にアクセスし、それらを連結し、テキストを抽出することです。
どのようなプログラミング言語を使用していますか? –