首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何替换固定长度文件中可变长度值的每个实例?

如何替换固定长度文件中可变长度值的每个实例?
EN

Stack Overflow用户
提问于 2020-10-02 13:54:38
回答 3查看 122关注 0票数 0

在下面的例子-这是一个固定长度的文件,我希望找到任何行,以"10“开头,并有一个"M”9位置后。当这些类型的记录被找到时,我只需要用单词Test替换名字,这是35个位置后发现的。

代码语言:javascript
复制
10123456789M 00002345678                       Tom Jones                           123 Main St
10123456789A 00002345678                       Debra Sally                         123 Main St
20123456789M 00002345678                       Michael Sampson                     123 Main St
10123456789M 00002345678                       Jonathan Smith                      123 Main St

如前所述,我可以通过以下regex查找和替换实现这一点

代码语言:javascript
复制
^(10(?:.{9}M).{35})(.*?) 
(\1)TEST 

我遇到的问题是,它是一个固定长度的文件,使用上面的文件会搞乱以下地址数据的起始位置。以下是我的研究结果。是否有一种方法可以使用Notepad++中的Regex查找和替换固定长度文件中的可变长度值?

代码语言:javascript
复制
10123456789M 00002345678                       TEST Jones                           123 Main St
10123456789A 00002345678                       Debra Sally                         123 Main St
20123456789M 00002345678                       Michael Sampson                     123 Main St
10123456789M 00002345678                       TEST Smith                      123 Main St
EN

Stack Overflow用户

回答已采纳

发布于 2020-10-02 14:21:10

Regex不太适合这个确切的用途。我能想到的最接近你所能使用的是:

代码语言:javascript
复制
(^10.{9}M.{35}).{5}
\1TEST_

(用空格代替_)

要获得

不幸的是,这会把名字弄糟。本质上,您捕获所有的名字到\1,而不是捕获接下来的5个什么。然后用捕获的+ TEST + Space:\1TEST替换所有

代码语言:javascript
复制
10123456789M 00002345678                       TEST ones                           123 Main St
10123456789A 00002345678                       Debra Sally                         123 Main St
20123456789M 00002345678                       Michael Sampson                     123 Main St
10123456789M 00002345678                       TEST han Smith                      123 Main St
票数 0
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64172775

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档