正则表达式过滤掉{}

时间:2018-05-07 11:06:52

标签: regex notepad++

来自记录:

ERR_KEY_VALUE=Error logging id = {0,number,integer}; patient email = {1};

和类似记录,我需要选择以下所有内容: 1.先'='之后 2.不{}而不是{}

因此:

ERR_KEY_VALUE = 错误记录ID = {0,数字,整数}; 患者电子邮件= {1} ;

我得到了这个,但不起作用:

=.*(^[{*}])

编辑:

STATUS_INVITE_SENT=Invite sent
STATUS_IN_PROGRESS=In Progress
STATUS_COMPLETE=Complete
WEBUSER_DUPLICATE=An account with username ''{0}'' already exists
FAMILY_TABLE_FIELD_MISSING=The First Name field 
DD_VALUE_AND=AND
KEY_VALUE=OR
family=family
ERR_KEY_VALUE=Error logging id = {0,number,integer}; patient email = {1};

结果:

...所以在Notepad ++中使用我的正则表达式后,我将用***

替换所选文本
STATUS_INVITE_SENT=***
STATUS_IN_PROGRESS=***
STATUS_COMPLETE=***
WEBUSER_DUPLICATE=*** ''{0}'' ***
FAMILY_TABLE_FIELD_MISSING=***
DD_VALUE_AND=***
KEY_VALUE=***
family=***
ERR_KEY_VALUE=*** {0,number,integer}; *** {1};

1 个答案:

答案 0 :(得分:1)

您可以使用

(?:\G(?!^)|^[^=\n]*=)\K(?:(\h*'*\{[^{}]*\}'*;?\h*)|(?:(?!\h*'*\{[^{}]*\}'*;?\h*).)+)

并替换为

(?{1}$1:***)

<强>详情

  • (?:\G(?!^)|^[^=\n]*=) - 下一场比赛的开始(\G(?!^))或线的开头,然后是=以外的任何0 +字符和换行符,然后是{ {1}}(=
  • ^[^=\n]*= - 省略到目前为止匹配的全文
  • \K - 两种选择中的任何一种:
    • (?:(\h*'*\{[^{}]*\}'*;?\h*)|(?:(?!\h*'*\{[^{}]*\}'*;?\h*).)+):捕获第1组匹配......
    • (\h*'*\{[^{}]*\}'*;?\h*) - 0+水平空白字符
    • \h* - 0+单引号
    • '*
    • \{[^{}]*\} - 0+单引号
    • '* - 可选的;?
    • ; - 0+水平空白字符
    • \h* - 或
    • | - 任何char,1或更多重复,不启动序列(见上文)。

如果匹配,(?:(?!\h*'*\{[^{}]*\}'*;?\h*).)+替换会将匹配替换为组1的内容,否则替换为(?{1}$1:***)

见截图:

enter image description here