首页 > 解决方案 > 在多行中查找任何值

问题描述

我需要找到指定的多行文本后跟任何值并将该值替换为 0。由于未知原因,我无法创建选择任何值的查询。这是我编辑的文件:

befriend=
    {
        id="RUS"
        value=400
    }

通过查询befriend=\r\n\t\t{\r\n\t\t\tid="RUS"我可以找到它,但不能更改为befriend=\r\n\t\t{\r\n\t\t\tid="RUS"r\n\t\t\tvalue=.*

可悲的是,我不知道以后如何替换该值,因为可能有不同数量的数字(例如:value=0;value=20;value=200)

标签: notepad++

解决方案


选项 1:带有捕获组的正则表达式

选择“正则表达式”搜索模式。然后查询(befriend=\r\n\t\t{\r\n\t\t\tid="RUS"\r\n\t\t\tvalue=)[0-9]*并填写\10“替换为:”字段。

正则表达式中的括号创建一个捕获组,随后可以用 \1 引用该组(因为它是第一个,在这种情况下仅是捕获组)。在替换字段中使用 \1 会导致括号中的表达式匹配的整个部分被再次填充。不属于捕获组的正则表达式的匹配部分([0-9]*、任何连续的数字序列或空字符串)将被丢弃,而代之以填充您的“0”替换值。

选项 2:带有后视功能的正则表达式

也许更优雅的是,使用(?<=befriend=\r\n\t\t{\r\n\t\t\tid="RUS"\r\n\t\t\tvalue=)[0-9]*并将您的替换值放在“替换为:”字段中。这(?<=...)是一个“lookbehind”,它只会检查括号中的表达式是否在下一个之前,而不会将其存储为匹配的一部分。

Lookbehinds 有一个限制,它们通常不允许检查任何正则表达式,但是对于像这种情况下的字符串常量,它们很好。


推荐阅读