我已经尝试解决这个问题很长一段时间了,我不能这样做。
它可以是任何字符串,但这只是一个例子:
"\This string \contains some\ backslashes\"
我需要制作一个正则表达式,我可以用它来检查字符串是否包含单个反斜杠。
然后我需要将给定的字符串转换为(我可以进行转换):
"\\This string \\contains some\\ backslashes\\"
然后使用正则表达式检查字符串不包含单个反斜杠。
顺便说一下,我没有必要使用正则表达式,我只需要能够以某种方式检查字符串。
答案 0 :(得分:2)
看起来你只是想检查一个字符串是否与正则表达式部分匹配,即,如果它包含一个前面没有反斜杠的字面反斜杠,也没有反斜杠。
使用
val s = """"\This string\\ \contains some\ backslashes\""""
val rx = """(?<!\\)\\(?!\\)""".r.unanchored
val ismatch = s match {
case rx(_*) => true
case _ => false
}
println(ismatch)
注意:
"""(?<!\\)\\(?!\\)""".r.unanchored
- 此行声明了一个正则表达式对象,并使该模式无锚,因此match
块不再需要完整的字符串匹配match
内,我们使用case rx(_*)
,因为模式本身内没有定义捕获组\\
)的反斜杠((?<!\\)
),后面没有反斜杠((?!\\)
)。答案 1 :(得分:0)
不确定你问的是什么..你是否在问一个字符串文字,它代表你给出的字符串作为一个例子?您可以使用另一个反斜杠转义反斜杠,或使用三引号。
scala> "\\This string \\contains some\\ backslashes\\"
String = \This string \contains some\ backslashes\
scala> """\This string \contains some\ backslashes\"""
String = \This string \contains some\ backslashes\
使用相同的技术替换反斜杠。
scala> "\\This string \\contains some\\ backslashes\\".replace("\\","\\\\")
String = \\This string \\contains some\\ backslashes\\
或
scala> """\This string \contains some\ backslashes\""".replace("""\""","""\\""")
String = \\This string \\contains some\\ backslashes\\
但我有一种感觉,你想做其他事情,比如验证输入。也许你可以提供更多的背景?
答案 2 :(得分:0)
试试这个
val s = """\This string \contains some\ backslashes\"""
s.replaceAll("""\\""","""\\\\""")