将regex区域移到下一行

qaxu7uf2  于 2023-08-08  发布在  其他
关注(0)|答案(2)|浏览(100)

我有一个列表如下:

WiytynXtP
54.76%
Witrn20t0t0
30.83%
Wrtinrt9t8
8.37%
Litrrtnurtrtx
3.17%
MtrtacrtS
2.60%
inrt9rtrt5/0.27%
Jul2004

字符串
现在我想用notepad++ regex把所有的百分比值移到下一行。
我使用以下正则表达式,但不适用于inrt9rtrt5/0.27%

Find : (\d+\.\d+%)(\R)  
Replace : \1\2\2

我需要类似以下结果的内容:

WiytynXtP

54.76%
Witrn20t0t0

30.83%
Wrtinrt9t8

8.37%
Litrrtnurtrtx

3.17%
MtrtacrtS

2.60%
inrt9rtrt5/
0.27%
Jul2004


如何解决此问题?

pgx2nnw8

pgx2nnw81#

您可以只使用匹配项而不使用任何捕获组:

\d+\.\d+%\R

字符串
模式匹配:

  • \d+\.\d+%匹配1+数字、点、1+数字和%
  • \R匹配任何换行符unicode序列

在替换中使用换行符和完全匹配

\n$0


参见regex demo
如果你想在(\R)匹配的同一个换行符之前加上前缀,那么你可以在替换中使用捕获组,然后使用整个匹配:

\d+\.\d+%(\R)


并替换为

$1$0


Regex demo

oalqel3c

oalqel3c2#

这个问题需要在每个百分比之前添加一个行分隔符(\R)。问题中的替换字符串是\1\2\2,它在 * 百分比之后添加了行分隔符 *。
尝试使用替换\2\1\2
请注意,RegEx文本中的句号(.)应该转义,否则可能会错误地处理一些非百分比。使用(\d+\.\d+%)(\R)。(尝试使用原始的RegEx,输入行为inrt9rtrt5/0=27%。)

相关问题