2016-06-24 11 views
0

ScalaのRegexライブラリを使用して2つの文字列の間で一致しない文字列の最初のインスタンスを返す方法はありますか?例えば一致しない正規表現スカラの最初のインスタンスを返す

val a = "some text abc123 some more text" 
val b = "some text xyz some more text" 

a.firstUnmatched(b) = "abc123" 
+0

テキストは事前に知られていません。この種の機能を使いたいユニークな文字列ペアのリストがあります – hden

+0

私はあなたを誤解しているかもしれません。私が正規表現を構築する方法は、 'val regex = str.r'(これはスカラー固有の方法です)を行うことです。しかし、 'str'はある時点で定義されなければなりません。私は、私の弦の中で最初に匹敵しないインスタンスがどこにあるのか、そんなものがどこになるのか分かりません。 – hden

+0

実際、私はその質問を誤解していると思う。私のコメントを削除する。申し訳ありません。 – jpmc26

答えて

1

正規表現パターンに基づいて、文字列に置き換える&を一致させるための良いです。
しかし、文字列の違いを探すには?ではない正確に。

ただし、diffを使用して相違点を見つけることができます。

"ABC123"

object Main extends App { 
    val a = "some text abc123 some more text 321abc" 
    val b = "some text xyz some more text zyx" 
    val firstdiff = (a.split(" ") diff b.split(" "))(0) 
    println(firstdiff) 
} 

プリントは、すべての後に所望の正規表現ですか?次に、分割が正規表現マッチングに置き換えられる可能性があることを認識してください。
この例では、正規表現パターンは言葉を探します:

val reg = "\\w+".r 
    val firstdiff = (reg.findAllIn(a).toList diff reg.findAllIn(b).toList)(0) 
関連する問題