2017-12-13 5 views
-4

私は残念ながら「正規表現」を使用する必要がある位置に置かれました。問題は、私が理解することができる基本言語でそれらを使用する方法を説明するリソースは見つかりません。既存のリソースは私の頭の上で道を通って私を失います。パラメータの二重の出現を拒否する/必要とする「正規表現」が必要です

私はregexesのエントリを持つサードパーティのソフトウェアを使用しています。私はそれが実際に使用している正規表現エンジンがよく分かりません。私は必要なもの

はこれです:、いくつかの具体的な結末(例えば」のいずれかで終わる:固有の文字列(例えば「\ Tempに\キャプチャ\ C」)で始まる結果を返します

一つの表現。 exe "、" .dll "または" .cab ") - ただし、結果の真ん中には、これらのエンディングが含まれていないことを確認してください。

例えば、リストのため:式はすべての行からの結果を返しますが、最初の.exeファイル、.dllファイルまたは.cabファイルを超えたテキストと行で、それはすべてのLOPう

C:\Temp\Captures\One.dll.dll 
C:\Temp\Captures\Two.exe 
C:\Temp\Captures\Three.cab.howdy.exe 
C:\Temp\Captures\Four.cab 
C:\Temp\Captures\Five.dll 
C:\Temp\Captures\Six.cab.cab 

後に来て、これらの最初の「終わり」の式までのテキストのみを返します。言い換えれば

、それの結果は次のようになります。

C:\Temp\Captures\One.dll 
C:\Temp\Captures\Two.exe 
C:\Temp\Captures\Three.cab 
C:\Temp\Captures\Four.cab 
C:\Temp\Captures\Five.dll 
C:\Temp\Captures\Six.cab 

それが唯一承認された終末の1(すなわち「.EXE」で終わる行を返さなければならない以外、私は必要な第二の発現は、類似しています、 " .dll "、" .cab ")、これらのエンディングのいずれかが既に発生した後に発生します。言い換えれば

、上記のリストから、それは結果のみを返します。

C:\Temp\Captures\One.dll.dll 
C:\Temp\Captures\Three.cab.howdy.exe 
C:\Temp\Captures\Six.cab.cab 
+0

おそらく、あなたのターゲット言語が何であるか教えてください。すべての正規表現が同じではありません。 – Amy

+0

私は分かりません。これは、「正規表現」を無効にするサードパーティのソフトウェアです。私はそれらのことを聞いたことがありません – Cambot

+0

ここから始めるのがいいです:https://regex101.com/r/ckCzsj/1 – sniperd

答えて

0

正規表現は、ターゲット言語とターゲット言語のさえバージョンに基づいて変化するので、それを知らずに、任意の式を私たちはあなたが正しく動作しないことを示しています。

それにもかかわらず、ここにあなたの最初の要求のために働くことの例である:最初のリストについては

C:\\Temp\\Captures\\\S*?(?:(?:\.exe)|(?:\.cab)|(?:\.dll)) 
1

、あなたが使用することができます。

^.*?\.(?:cab|dll|exe)

ラインのbeggining意味(^ )、できるだけ小さいもの(.*?)、その後にドット(\.)、拡張子の1つ((?:cab|dll|exe))が続きます。

二回の拡張子を持つ要素を取得するためには、使用することができます:

^(?:.*\.(?:cab|dll|exe)){2,}$

のいずれかが続くドット(\.)が続く[「何」(.*)を含む行を意味あなたの延長((?:cab|dll|exe))]少なくとも2回({2,})。

あなたのツールはPCREの正規表現と互換性があります。

関連する問題