我刚刚了解了正则表达式,这对我来说仍然很困惑。
首先,我在记事本++中有一个包含500k行的文件。大约在第 394900 行是一些需要替换的静态内容。手动完成的工作并不多,但只是为了学习目标,我想通过正则表达式来做到这一点。
这些行包含以下字符串,而 X 是随机数:{x 0.xxxxx xx.xxx}现在我必须替换 .xxxxx 之前每行的第二个数字
简而言之:{x 0.xxxxx xx.xxx} 必须在每行中替换为 {x 8.xxxxx xx.xxx}。
通过正则表达式执行此操作的最简单方法是什么?
使用 d
表示数字:
替换({d )d(.d{5} d{2}.d{3}})
带182
(第一组,然后是数字8
,然后是第二组)。
如果显式量词(例如 d{3}
) 不支持,请改用 d+
(即一个或多个数字):
没有显式量词(对于 NPP 版本 <6):
将({d )d(.d+ d+.d+})
替换为 182
。
您可以使用基于正面展望的正则表达式,如下所示,
d+(?=.d{5}s)
然后将匹配的数字替换为 8
。仅当数字后跟一个点,然后是一个 5 位数字和一个空格时,它才匹配该数字。
演示