记事本++从位置返回值

时间:2014-07-14 08:04:14

标签: notepad++

是否可以使用Notepad ++查找并返回位置值?

我的意思是我有一个巨大的txt文件,我想知道每行142-143位的值。

示例数据:

2193476219045Y73    4095732904572390458HERG ÖOEJFNTG2P9085GNJERTOGJN0485NFLDN M4508NJWÅOTIGSN4085JN5SEKLGMN40WI5GMN4+5GI4M4+05IGM450GIM3405GM4I0M430I5GM403IN5G4305GN45IGN405IGN450IGBMFDLSBGKD
2193476219045Y73    4095732904572390458HERG ÖOEJFNTG2P9085GNJERTOGJN0485NFLDN M4508NJWÅOTIGSN4085JN5SEKLGMN40WI5GMN4+5GI4M4+05IGM450GIM3405GM7I0M430I5GM403IN5G4305GN45IGN405IGN450IGBMFDLSBGKD
2193476219045Y73    4095732904572390458HERG ÖOEJFNTG2P9085GNJERTOGJN0485NFLDN M4508NJWÅOTIGSN4085JN5SEKLGMN40WI5GMN4+5GI4M4+05IGM450GIM3405GM5I0M430I5GM403IN5G4305GN45IGN405IGN450IGBMFDLSBGKD
2193476219045Y73    4095732904572390458HERG ÖOEJFNTG2P9085GNJERTOGJN0485NFLDN M4508NJWÅOTIGSN4085JN5SEKLGMN40WI5GMN4+5GI4M4+05IGM450GIM3405GM4I0M430I5GM403IN5G4305GN45IGN405IGN450IGBMFDLSBGKD
2193476219045Y73    4095732904572390458HERG ÖOEJFNTG2P9085GNJERTOGJN0485NFLDN M4508NJWÅOTIGSN4085JN5SEKLGMN40WI5GMN4+5GI4M4+05IGM450GIM3405GMKI0M430I5GM403IN5G4305GN45IGN405IGN450IGBMFDLSBGKD

结果为:

4
7
5
4
K

编辑:

以下两个答案来自Matt Champion& Kokkie很好地工作。太糟糕了,我不能同时接受这两个答案:)

2 个答案:

答案 0 :(得分:1)

默认打开查找和替换窗口( CTRL + H ,或转到Search - > Replace...)。从这里,更改"搜索模式" (窗口左下方)到"正则表达式"并确保未勾选. matches newline

Find what :字段中输入(.{137})(.{2})(.*),然后在Replace with :字段中输入$2。这将匹配您正在寻找的字符(数字可能看起来不对,但请阅读下面的说明以获取更多详细信息)。看起来它似乎没有匹配任何东西,但确保向左滚动以确保在替换后我的窗口向右移动意味着我看不到任何输出,但它只是模糊了在屏幕的左边缘。

解释

(.{137})将匹配前137个字符,无论它们是什么(数字,字母,符号等)。我们需要匹配这些,即使我们不想显示它们,否则它们会在更换时被遗忘。作为旁注,我们在这里使用137而不是141的原因是因为(至少在Notepad ++中),制表符在技术上被视为单个字符,即使它移动文字沿着4行。

(.{2})将匹配接下来的两个字符,无论它们是什么字符。 (你说你想要位于142-143的两个角色,但是然后仅给出143处的角色的例子。如果你只想要第二个角色,请将137更改为138并更改此群组中的21

(.*)将匹配该行上的其他所有内容,这是必要的,因为否则您仍会在替换后看到这些字符。

$2用于替换字段,因为使用$占位符后跟一个表示匹配组所在位置的数字,可以访问使用一组括号匹配的任何内容。在此正则表达式中,有3个匹配项,这意味着我们可以根据需要使用值$1$2$3(尽管我们只需要$2)。

答案 1 :(得分:1)

这里有另一种正则表达式解决方案:

find:       ^.{142}(.{1}).*$
replace with:   \1

说明:
^。{142}前142个字符
(。{1})你感兴趣的角色
。* $剩下的就行了

enter image description here