正则表达式处理长行
regex working with long lines
我在一个 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
我用正则表达式尝试了很多东西,但没有任何效果。
这是一个通用的正则表达式解决方案:
查找:
^([^\s]*).*(\d+)$
替换:
这里的想法是将第一个字符串和最后一个数字匹配为 capture 组,这由括号中的模式中的两个术语表示。这些捕获组在替换中可用 </code> 和 <code>
(有时 </code> 和 <code>
,具体取决于正则表达式 tool/engine)。我们可以用这些捕获组替换每一行,让您得到您期望的输出。
请注意,这可能是"trash"原始文件,但如果您使用的是Notepad++之类的工具,您可以简单地将此结果复制出来,然后撤消替换,或者直接关闭原始文件而不保存。
我能想到的最简单的方法是:
Find: " .* "
Replace: " "
这将从第一个 space 到最后一个 space 的所有内容替换为单个 space,实现您的目标。
注意:引号仅用于帮助显示 space 在正则表达式中的位置。
我在一个 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
我用正则表达式尝试了很多东西,但没有任何效果。
这是一个通用的正则表达式解决方案:
查找:
^([^\s]*).*(\d+)$
替换:
这里的想法是将第一个字符串和最后一个数字匹配为 capture 组,这由括号中的模式中的两个术语表示。这些捕获组在替换中可用 </code> 和 <code>
(有时 </code> 和 <code>
,具体取决于正则表达式 tool/engine)。我们可以用这些捕获组替换每一行,让您得到您期望的输出。
请注意,这可能是"trash"原始文件,但如果您使用的是Notepad++之类的工具,您可以简单地将此结果复制出来,然后撤消替换,或者直接关闭原始文件而不保存。
我能想到的最简单的方法是:
Find: " .* "
Replace: " "
这将从第一个 space 到最后一个 space 的所有内容替换为单个 space,实现您的目标。
注意:引号仅用于帮助显示 space 在正则表达式中的位置。