Я сопоставляю и заменяю 3 шаблона для понимания. Шаблоны упорядочены, и я ожидаю, что для понимания получим ans1 или ans2 или ans3, если произойдет замена, и продолжу итерацию. Я не хочу выполнять ans2 и ans3, если произойдет замена для ans1
val pat1 ="""(?sm)^\s*#.+?$""".r
val pat2 ="""(?sm)^(.+?((['"])[^\\3]*\3))(.*)""".r
val pat3 ="""(?sm)(#.+?$)""".r
val ansx = for { str <- file_list
str2 = str.toString
ans1 = pat1.replaceAllIn(str2, "") // if replacement happens yield ans1
ans2 = pat2.replaceAllIn(ans1, m => {
"".concat(m.group(1))
}) // if replacement happens yield ans2
ans3 = pat3.replaceAllIn(ans2, "")
} yield ans3
Чтобы сделать это, когда я обертываю ans2 с условием if (), я получаю ошибку.
if( ans1 == str2 ) {
ans2 = pat2.replaceAllIn(ans1, m => {
"".concat(m.group(1))
})
}
говорит, что не может разрешить символ ans2. Есть ли простой способ решить эту проблему?.
Добавление примеров данных для file_list, на самом деле это происходит из файла.
# comment1
# comment2
#hbase_table_name=mytable # hbase table.
hbase_table_name=newtable # hbase table.
hbase_txn_family=txn
app_name= "cust#100" # Name of the application
#app_name= "cust#100" # Name of the application
app_user= 'all#50,all2#100' # users
hbase.zookeeper.quorum=localhost
zookeeper.znode.parent=/hbase-secure
hbase.zookeeper.property.clientPort=2181
# from comments, other lines
hbase_table_name=newtable ## hbase table.
app_user= 'all#50,all2#100' # users - "all" of them