2016-09-13 8 views
0

これはおそらく簡単ですが、答えを見つけるにはどのフレーズをgoogleにすべきかわかりません。私のnoobinessを許しなさい。Regexによって返された値に対してRegexを実行してください

私が持っている文字列を次のようになります(ファイル名):

site12345678_date20160912_23001_to_23100_of_25871.txt 

が、この命名規則が意味するところはある

「9月12日2016(20160912)のためのレコードサイト12345678のための25871のうち23100を通じて23001」 .*(_date[0-9]{8}).*文字列 _date20160912を返します。

は、私は何をしたい日付の部分(_dateと、次の_の間に、これらの数字)

正規表現を抽出しています。しかし、私が実際に探しているのはちょうど20160912です。明らかに、[0-8]{8}は、この場合、サイトと混同される可能性があり、カウントを記録する可能性があるため、私が望むものを与えません。

この種の「部分文字列」を1つの正規表現でどのように達成できますか?

+0

だけで使用'/ _date([0-9] {8})/'で数値部分を抽出します。ターゲットプラットフォームにこの機能がある場合は、見た目( '/(?<= _ date)[0-9] {8} /')[[demo](https://regex101.com/r/wU1iU7/1)]ヒント:JSはそうではありません。 – raina77ow

+0

どのような言語を使用しますか? –

+0

カッコを再調整するだけです - '。* _ date([0-9] {8})。*' –

答えて

0

キャプチャグループを '_date'を含むものに変更するには、カッコをシフトするだけです。そして、あなたは、キャプチャグループ#1を探したいでしょう:Pythonで行われている場合

、例えば、それは次のようになります。

import re 
regex = '.*_date([0-9]{8}).*' 
str = 'site12345678_date20160912_23001_to_23100_of_25871.txt' 
m = re.match(regex, str) 
print m.group(0) # the whole string 
print m.group(1) # the string you are looking for '20160912' 

は、ここでは、アクションでそれを参照してください。https://eval.in/641446

+0

ああああ。私は最初にそれを試していたはずです。 Pentaho Spoonの魅力のように動作します。ありがとう! :) – Adam

0

正規表現:.*(_date[0-9]{8}).*は、文字列_date20160912を返します。

つまり、フルストリングマッチが必要なメソッドで正規表現を使用しており、グループ1の値にアクセスできます。

.*_date([0-9]{8}).* 
     ^^^^^^^^^^ 

regex demoを参照してください:あなたが正規表現に変更する必要がある唯一のものは、キャプチャグループの配置です。

関連する問題