2017-08-24 34 views
0

私は、正規表現を使って指定された文字列からDatalake Store FQDNを抽出しようとしています。誰かが助けてくれますか?文字列からADL FQDNを抽出する正規表現

Input = adl://asbwje-fhs.azuredatalakestore.net/123/wds/xyz=456/ 

Output = adl://asbwje-fhs.azuredatalakestore.net 

ADL FQDNは、その定義に[a-zA-Z_-]を持つことができます。私は、次のことを試してみた:

scala> val ADLStorePattern = "(.*) ([a-zA-Z_-]+) (.net) (.*)".r 
ADLStorePattern: scala.util.matching.Regex = (.*) ([a-zA-Z_-]+) (.net) (.*) 

scala> val ADLStorePattern(adl, _, _) = "adl://asbwje-fhs.azuredatalakestore.net" 
scala.MatchError: adl://asbwje-fhs.azuredatalakestore.net (of class java.lang.String) 
    ... 32 elided 

scala> val ADLStorePattern(adl, _) = "adl://asbwje-fhs.azuredatalakestore.net" 
scala.MatchError: adl://asbwje-fhs.azuredatalakestore.net (of class java.lang.String) 
    ... 32 elided 

scala> val ADLStorePattern(_, adl, _) = "adl://asbwje-fhs.azuredatalakestore.net" 
scala.MatchError: adl://asbwje-fhs.azuredatalakestore.net (of class java.lang.String) 
    ... 32 elided 

scala> val ADLStorePattern(_, adl, _, _) = "adl://asbwje-fhs.azuredatalakestore.net" 
scala.MatchError: adl://asbwje-fhs.azuredatalakestore.net (of class java.lang.String) 
    ... 32 elided 

scala> val ADLStorePattern = "([a-zA-Z_-]+) (.net) (.*)".r 
ADLStorePattern: scala.util.matching.Regex = ([a-zA-Z_-]+) (.net) (.*) 

scala> val ADLStorePattern(adl, _) = "adl://asbwje-fhs.azuredatalakestore.net" 
scala.MatchError: adl://asbwje-fhs.azuredatalakestore.net (of class java.lang.String) 
    ... 32 elided 

scala> val ADLStorePattern(adl, _, _) = "adl://asbwje-fhs.azuredatalakestore.net" 
scala.MatchError: adl://asbwje-fhs.azuredatalakestore.net (of class java.lang.String) 
    ... 32 elided 

答えて

1

次のように、正規表現パターンの第一グループからFQDNを抽出することができます。

val url = "adl://asbwje-fhs.azuredatalakestore.net/123/wds/xyz=456/" 

val pattern = """(adl://[^/]*)(/.*)?""".r 

val fqdn: String = url match { 
    case pattern(x, _) => x 
    case _ => "No match!" 
} 
// fqdn: String = adl://asbwje-fhs.azuredatalakestore.net 

第二オプションのグループは、URLがで構成例をカバーするものですFQDN部分のみ。

関連する問題