[英]scala - regex - match everything except “{{”
我想匹配包括“ {”,“ {{{””在内的所有内容,当匹配达到“ {{”时,匹配停止。
我尝试使用以下代码,但是当达到“ {{{”
"^(.(?![{][{]))+[^{]".r
有没有办法匹配除“ {{”以外的所有内容
您的描述含糊不清。 我认为这不是您要追求的目标,但也许会有所帮助。
val pttrn = """(\{|\{\{\{+)"""
"{" matches pttrn //true
"{{" matches pttrn //false
"{{{" matches pttrn //true
"{{{{" matches pttrn //true
如果我正确理解了您的要求,则可以在正则表达式模式中将{{
括在单词边界\\b
中:
val pattern = """^(.*?)\b\{\{\b.*$""".r
val str = "{a}bb{{{cc}}}ddd{{e}}ff{{{{gg}}}}"
str match {
case pattern(s) => s
case _ => "no-match"
}
// res1: String = {a}bb{{{cc}}}ddd
我想到了这个:
val samples = List ("foo{bar", "foo{{bar", "foo{{{bar", "{foo{bar{{baz{{{fobar{", "{{foo{bar{{baz{{{fobar{{")
samples.map (_.replaceAll ("(^|[^{])\\{{2}([^{]|$)", "##"))
res62: List[String] = List(foo{bar, fo##ar, foo{{{bar, {foo{ba##az{{{fobar{, ##oo{ba##az{{{foba##)
它替换了模式,该模式将继续存在,但是我想您可能会要求pattern.matches(...),否则请删除。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.