簡體   English   中英

scala-正則表達式-匹配除“ {{”以外的所有內容

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM