2017-12-01 13 views
0

私は単語/数字を含む文字列を持ち、必要に応じて真中にハイフンを含むことができます。私はスカラの正規表現を使用してこの文字列をキャプチャしようとしています。 [\w\d-]+[\w\d\-]+を試しましたが、これは常にnullを返します。ハイフンで単語/数字をキャプチャするにはどうすればよいですか?スカラー正規表現で単語、数字、ハイフンをキャプチャします

e.g.input文字列= ABC1-LT.json

用法:

val pattern = """^([\w\d-]+).json$""".r 
pattern.findFirstMatchIn(name) match { 
     case Some(m) => try{ 
      m.subgroups.mkString("-") 
     } 
.. 

ありがとう!

+0

どのように正規表現を使用して文字列を一致させていますか? – Sweeper

+0

valパターン= "" "^([\ w \ d])。json $" ""。r – vijay

+0

あなたの正規表現では '+'はどこにありますか? – Sweeper

答えて

1

最初に、Scalaではコンパイルされた正規表現パターンがデフォルトでアンカーされているので、^$は不要です。 \d\wのサブセットなので、どちらも不要です。

次に、パターンにキャプチャグループが1つしかないため、subgroupsの結果には1つのエントリしか存在できません。つまり、mkString()は、間に何も存在しないため、グループ間に何も配置できません。

最後に、単一のキャプチャグループを抽出する簡単な方法があります。

関連する問題