正则表达式使用长队

问题描述 投票:0回答:2

我在一个txt文件中得到了很多这些字符串:

X00NAP-0111-OG02Flur-A  2     AIR-CAP2702I-E-K9     00:b8:b8:b8:7d:b8          0111-HGS  DE       10.100.100.100   8   
X006NAP-0500-EG00Grossrau-A  2     AIR-CAP2702I-E-K9     50:0f:80:94:82:c0          HGS 0500  DE       10.100.100.100   1   
Y008NAP-8399-OG04OE3020-A  2     AIR-CAP2702I-E-K9     00:b8:b8:b8:7d:b8  HGS Erfurter Hof  DE       10.100.100.100   1   
A1234NAP-4101-OG02Raum237-A  2     AIR-CAP2602I-E-K9     00:b8:b8:b8:7d:b8  AP 2 Anmeldung V  DE       10.100.100.100   0   

我只对第一个字符串和行尾的数字感兴趣。数量可以是最大值。 99所以最后我希望有这样的输出:

X00NAP-0111-OG02Flur-A 8   
X006NAP-0500-EG00Grossrau-A 1   
Y008NAP-8399-OG04OE3020-A 1   
A1234NAP-4101-OG02Raum237-A 0

我用正则表达式尝试了很多东西,但没有任何效果。

regex string long-integer
2个回答
1
投票

这是一个通用的正则表达式解决方案:

找:

^([^\s]*).*(\d+)$

更换:

$1 $2

这里的想法是将第一个字符串和最终数字匹配为捕获组,这些捕获组由括号括起的模式中的两个术语表示。这些捕获组可以替换为$1$2(有时\1\2,取决于正则表达式工具/引擎)。我们可以用这些捕获组替换每一行,为您留下您期望的输出。

请注意,这可能会“废弃”原始文件,但如果您使用的是Notepad ++之类的工具,则只需复制此结果,然后撤消替换,或者只关闭原始文件而不保存。

Demo


0
投票

我能想到的最简单的方法是:

Find: " .* "
Replace: " "

这将用一个空间替换从第一个空间到最后一个空间的所有内容,从而实现您的目标。

注意:引号仅用于帮助显示正则表达式中的空格。

© www.soinside.com 2019 - 2024. All rights reserved.