2017-05-05 1 views
2

私の入力ファイル名は常に次のようにする必要があります。AB_DataLoad_any number of character without space_any numeric value.csvregexep_likeを使用してループする場合、plsqlで英数字の文字列をアンダースコアで検証する方法は?

pl SQLのifループ内でこれを検証するにはどうすればよいですか?

私の素朴な試みは、このようなものです:あなたはここでしか、正規表現の修正を必要とするので

regexp_like('AB_Dataload_xYzsdf_36.csv','^AB_Dataload_[A-Z][a-z]+_[2-9]+') 
+1

あなたのパターンは[0-9] + + _ ' '^ AB_Dataload _ [^]のようになります。 [。] csv $ ''。 –

+0

@DmitryEgorov:うん、または '[。] csv'は、上記のコメントを更新しました。 Shouvik、 "pl SQLのifループ内でこれを検証する"とはどういう意味ですか? –

+0

IF(入力ファイル名が有効)THEN何かELSEが返す –

答えて

1

が1:

'^AB_Dataload_[^ ]+_[0-9]+[.]csv$' 

問題は、あなたの正規表現の[A-Z][a-z]+_[2-9]+一部にあった:それは一致しました少なくとも1つの小文字([a-z]+)が続く大文字()、および2-9の範囲から1つ以上の桁にのみ一致する0および1 w許可される)。

  • ^ - 文字列
  • AB_Dataload_の開始 - リテラルAB_Dataload_文字列
  • [^ ]+ - 空白以外のゼロ個以上の文字(あなたはまた、任意の1+の非空白文字に一致するように\S+を使用することができます)
  • _ - 下線
  • [0-9]+ - 1+数字
  • [.] - リテラルドット(または\.使用することができます)
  • csvからcsvサブ
  • $で - 文字列の最後
関連する問題