Нужна помощь в создании регулярного выражения, которое может работать с обратной косой чертой при следующих условиях.
1> если строка содержит обратную косую черту, за которой не следует другая обратная косая черта или канал подряд, чем я должен вернуть строку без обратной косой черты
2>, если строка содержит обратную косую черту и канал подряд, чем я не должен удалять обратную косую черту.
3>, если он содержит обратную косую черту, за которой следует другая обратная косая черта подряд (\\
), чем я не должен удалять обратную косую черту.
scala> val str = """Sports\s"""
str: String = Sports\s
scala> str.replaceAll("""\\""", "")
res70: String = Sportss
scala> val str = """Sports\\s"""
str: String = Sports\\s
scala> str.replaceAll("""\\""", "")
res71: String = Sportss
scala> val str = """Sports\\|s"""
str: String = Sports\\|s
scala> str.replaceAll("""\\""", "")
res74: String = Sports|s
В приведенных выше тестах, если строка содержит одну обратную косую черту или комбинацию обратной косой черты и канала, обратное пространство полностью удаляется. Что я должен изменить для обработки случаев?
На основании моего предыдущего вопроса был дан рабочий ответ, но вот еще один случай, когда решение не работает.
scala> val str = "Spo\\rts\\s"
str: String = Spo\rts\s
scala> str.replaceFirst("""^([^\\|]*)\\([^\\|]*)$""", "$1$2")
res102: String = Spo\rts\s
ожидаемый результат должен быть без \