Notepad++ 记事本++;:搜索和替换表达式
对于任何文本字符串和特定命令“\command”,如何用\command{STRING}替换文本中出现的所有“STRING”(文本中有此引号)Notepad++ 记事本++;:搜索和替换表达式,notepad++,Notepad++,对于任何文本字符串和特定命令“\command”,如何用\command{STRING}替换文本中出现的所有“STRING”(文本中有此引号) 也就是说,用命令简单地替换引号。但只有当引号的形式为“STRING”时,而不是当引号的形式为“STRING”(开始标记不同,结束标记相同)时。我想说的是,尝试使用正则表达式。您可以选择“正则表达式”作为搜索模式 simples搜索将是“(.*)”。括号允许您引用替换正则表达式中找到的字符串。如果要允许字符串中使用换行符,请选中复选框“.matches n
也就是说,用命令简单地替换引号。但只有当引号的形式为“STRING”时,而不是当引号的形式为“STRING”(开始标记不同,结束标记相同)时。我想说的是,尝试使用正则表达式。您可以选择“正则表达式”作为搜索模式 simples搜索将是
“(.*)”
。括号允许您引用替换正则表达式中找到的字符串。如果要允许字符串中使用换行符,请选中复选框“.matches newline”
如果您有一个像“STRING”STRING“
这样的文本,并且您只想匹配第一个引号之间的字符串,那么您将需要以下正则表达式”([^“]*)”
。如果您的字符串包含换行符,这也将匹配。如果您不想这样做,请使用“([^”^\n]*)”
替换正则表达式将是
\\command{\1}
默认的搜索和替换没有进行剪切?使用正则表达式可以更好地防止单行上多个带引号的字符串:“([^”]*)”
,但只有在引用的字符串不跨行的情况下,这才有效。啊,你是对的。我想这取决于搜索和替换查询的确切目的。类似于“([^”^\n]*)“
可能会起作用吗?我不确定记事本++如何处理换行符。按照惯例,它们在正则表达式中永远不会匹配,除非您使用某种标志显式启用多行表达式。这取决于记事本++使用的正则表达式引擎。有一个“.matches newline”复选框。我刚试过,带换行符的字符串不会被(.*)
匹配,至少在我的记事本++中是这样。我没有看到复选框“.matches newline”。有,你可能应该更新你的记事本++安装(帮助->更新记事本+
)。此外,从上的记事本++版本6,您可以在正则表达式中使用\r
和\n
。