忽略用于匹配的内部字符的子字符串的正则表达式提取

Regex extraction of substrings ignoring internal character used to match

我正在匹配字符 "" 与 "(.*?)" 之间的键值对字符串 "(.*?)" 我怎样才能忽略值部分中任何额外的 " 字符。

示例字符串 {"1"=>"email@example.com"}

您可以使用

String pat = "(?<=\{|=>)\"(.*?)\"(?=\}|=>)";

regex demo

详情

  • (?<=\{|=>) - 正后视匹配紧接在 {=>
  • 之前的位置
  • " - 双引号
  • (.*?) - 第 1 组:除换行字符外的任何零个或多个字符,尽可能少
  • " - 双引号
  • (?=\}|=>) - 匹配紧跟 }=>.
  • 的位置的正向前瞻