2016-07-28 5 views
0

パスの最初の4桁の部分と次の2つの部分に一致する正規表現が欲しいです。だから、見つけるだろう:これらの行の両方正規表現を使って、最初の部分がn桁だけの部分を探す

pyramid:/58A2/D456-509F-4905-A473/FCAD1612CEDB/filename1.tif 
cache:/ThumbCache/58A2/D456-509F-4905-A473/FCAD1612CEDB/filename2.jpg 

/58A2/D456-509F-4905-A473/FCAD1612CEDB/ 

を私は

/.{4}/.*?/.*?/ 

を試してみましたが、これは最初の1 ...ではなく、1秒間動作します。どうやら、/ ThumbCache /は4桁ではないので、単に一致していません。

* UPDATE *

[OK]を...ので、これは実際にこの簡単な例では、動作します...私の実際のコードでは、私はそれはないでしょう余分/.*?/

を持っていました人々が回答を投稿したので、私はこの投稿を削除させてください。何をすべきかわからない。 shareeditdeleteflag

+0

どのような正規表現のエンジン/言語を使用していますか? – lintmouse

+0

キャプチャグループの操作に慣れている場合、これは正しい軌道に乗るかもしれません:https://regex101.com/r/lG3sM5/1 – lintmouse

答えて

0

[OK]を...、この簡単な例では...私の実際のコードでは、私が持っていたので、この実際に動作する、それが私はこの投稿を削除させません/.*?/

余分な人々が転記ので答え。何をすべきかわからない。

0

this regexをお試しください:

\/[0-9A-Z]{4}\/(?:[0-9A-Z]{4}-?){4}\/[0-9A-Z]{12}\/ 

正規表現の説明:

\/   # Slash literal 
[0-9A-Z]  # Match digit or uppercase letter 
{4}   # Match previous exactly 4 times (So 4 digits/uppercase letters) 
\/ 
(?:   # Start non-capturing group (Don't store the result of group) 
    [0-9A-Z] 
    {4} 
    -?  # Optionally a hyphen (Last sequence doesn't have one) 
)   # End non-capturing group 
{4} 
\/ 
[0-9A-Z] 
{12} 
\/ 

また、あなたは複数行の入力を持っている場合、グローバルキャプチャするために、グローバルまたはgフラグが必要になります。入力

pyramid:/58A2/D456-509F-4905-A473/FCAD1612CEDB/filename1.tif 
cache:/ThumbCache/58A2/D456-509F-4905-A473/FCAD1612CEDB/filename2.jpg 

については

これはあなたが個別にキャプチャする必要は何も指定していないとして、私はすべてのキャプチャグループを追加しませんでした

/58A2/D456-509F-4905-A473/FCAD1612CEDB/ 
/58A2/D456-509F-4905-A473/FCAD1612CEDB/ 

と一致します。完全一致出力が得られます。

関連する問題