【发布时间】:2023-03-25 19:58:01
【问题描述】:
我有以下正则表达式来查找我的字符串中的所有 {word} 实例。在以下字符串中,这(正确)匹配 {eeid} 和 {catalog}:
表达式
{([^:]*?)}
正在搜索的字符串
{?:participants::lookup(.,{eeid},{catalog})}
现在 - 我需要“转义”其中一个值,因此它不会被匹配/替换。我正在尝试使用方括号来这样做:
{?:participants::lookup(.,{eeid},[[{catalog}]])}
如何调整我的正则表达式使其忽略 {catalog}(包含在 [[ ]] 中)但找到 {eeid}?
【问题讨论】:
-
尝试:
(?<!\[\[(?:(?!\[\[|]]).)*){([^{}]*)}(?!(?:(?!\[\[|]]).)*]])假设[[和]]并不总是与{...}相邻 -
它们总是相邻的。我想保留(不匹配)任何类似 [[{...}]]
-
在这种情况下使用
(?<!\[\[){([^{}]*)}(?!]]) -
那行得通...我实际上不得不在表达式中添加另一个位,[^:](我也不想匹配有冒号的地方:)
(?<!\[\[){([^:{}]*)}(?!]])是我最终得到了什么。似乎工作!谢谢!