Notepad++ 中的正则表达式 regular/recursive find/replace
Regexp regular/recursive find/replace in Notepad++
如何拆分以特定格式定义的一些字符串:
[length namevalue field]name=value[length namevalue field]name=value[length namevalue field]name=value[length namevalue field]name=value
是否可以使用 Notepad++ 中的 Find/Replace 正则表达式隔离名称=值对,用白色 space 替换 [长度名称值字段]?
主要问题与数值有关,其中简单的 \d{4} 搜索不起作用。
例如
输入:
0010name=mario0013surname=rossi0006age=180006phone=0014address=street
0013name=marianna0013surname=rossi0006age=210006phone=0015address=street1
0003name=pia0015surname=rossini0005age=30017phone=+39221122330020address=streetstreet
输出:
name=mario surname=rossi age=18 phone= address=street
name=mario surname=rossi age=18 phone= address=street
name=marianna surname=rossi age=21 phone= address=street1
name=pia surname=rossini age=3 phone=+3922112233 address=streetstreet
您可以使用
\d{4}(?=[[:alpha:]]\w*=)
\d{4}(?=[^\W\d]\w*=)
参见regex demo。
模式匹配
\d{4}
- 四位数
(?=[[:alpha:]]\w*=)
- 紧接着是一个字母,然后是任何零个或多个单词字符,紧跟在当前位置右侧的 =
字符。
(?=[^\W\d]\w*=)
- 紧跟一个字母或下划线,然后是任何零个或多个单词字符,紧跟在当前位置右侧的 =
字符。
在 Notepad++ 中,如果你想删除行首的匹配项并在其他任何地方替换为 space,你可以使用
^(\d{4}(?=[[:alpha:]]\w*=))|(?1)
并替换为 (?1: )
。上面解释的模式 \d{4}(?=[[:alpha:]]\w*=)
匹配并 捕获 到组 1,如果它在行的开头 (^
),并且只匹配其他任何地方((?1)
递归第 1 组模式,以免重复)。 (?1: )
替换意味着如果第 1 组匹配,我们用空字符串替换,否则,我们用 space.
替换
查看演示截图:
如何拆分以特定格式定义的一些字符串:
[length namevalue field]name=value[length namevalue field]name=value[length namevalue field]name=value[length namevalue field]name=value
是否可以使用 Notepad++ 中的 Find/Replace 正则表达式隔离名称=值对,用白色 space 替换 [长度名称值字段]? 主要问题与数值有关,其中简单的 \d{4} 搜索不起作用。
例如
输入:
0010name=mario0013surname=rossi0006age=180006phone=0014address=street
0013name=marianna0013surname=rossi0006age=210006phone=0015address=street1
0003name=pia0015surname=rossini0005age=30017phone=+39221122330020address=streetstreet
输出:
name=mario surname=rossi age=18 phone= address=street
name=mario surname=rossi age=18 phone= address=street
name=marianna surname=rossi age=21 phone= address=street1
name=pia surname=rossini age=3 phone=+3922112233 address=streetstreet
您可以使用
\d{4}(?=[[:alpha:]]\w*=)
\d{4}(?=[^\W\d]\w*=)
参见regex demo。
模式匹配
\d{4}
- 四位数(?=[[:alpha:]]\w*=)
- 紧接着是一个字母,然后是任何零个或多个单词字符,紧跟在当前位置右侧的=
字符。(?=[^\W\d]\w*=)
- 紧跟一个字母或下划线,然后是任何零个或多个单词字符,紧跟在当前位置右侧的=
字符。
在 Notepad++ 中,如果你想删除行首的匹配项并在其他任何地方替换为 space,你可以使用
^(\d{4}(?=[[:alpha:]]\w*=))|(?1)
并替换为 (?1: )
。上面解释的模式 \d{4}(?=[[:alpha:]]\w*=)
匹配并 捕获 到组 1,如果它在行的开头 (^
),并且只匹配其他任何地方((?1)
递归第 1 组模式,以免重复)。 (?1: )
替换意味着如果第 1 组匹配,我们用空字符串替换,否则,我们用 space.
查看演示截图: