[英]How can I use regex to remove /1 or /2?
正则表达式专家
这是我要使用正则表达式解析的以下代码行:
@ERR030882.2595 HWI-BRUNOP16X_0001:3:1:6649:5175#0/1
我想获得以下内容:
@ERR030882.2595 HWI-BRUNOP16X_0001:3:1:6649:5175#0
我在rubular.com上写了以下正则表达式:
(@.* *.)(!?(\/.))
我的想法是使用否定符通过(!?(\\/.))
删除/ 1。 但是,这会产生整条生产线吗?
@ERR030882.2595 HWI-BRUNOP16X_0001:3:1:6649:5175#0/1
为什么(?!thisismystring)
无法删除/ 1? 我用这个来搜索,但他们似乎暗示了我已经在尝试的类似事情? 非常感谢您的帮助。
我认为您要编写的是/(\\@.* .*)(?=\\/\\d)/
(您需要转义at符号@
以防止Perl将其视为数组),但是您需要正向超前,因为您要匹配所有内容,直到以下字符是一个斜杠后跟一个数字。
这是一个演示程序。
use strict;
use warnings;
use 5.010;
my $s = '@ERR030882.2595 HWI-BRUNOP16X_0001:3:1:6649:5175#0/1';
$s =~ /(\@.* .*)(?=\/.)/;
print $1, "\n";
但是 ,最好复制整个字符串并删除斜杠及其后的所有内容,就像这样
use strict;
use warnings;
my $s = '@ERR030882.2595 HWI-BRUNOP16X_0001:3:1:6649:5175#0/1';
(my $fixed = $s) =~ s{/\d+$}{};
print $fixed, "\n";
产量
@ERR030882.2595 HWI-BRUNOP16X_0001:3:1:6649:5175#0
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.