[英]Can I use condition in regular expression in Perl?
仍在处理正则表达式。 我有一个包含行组合的文件。 我需要从A到右边拿起所有东西。 如果字符A在里面// - 它不计算在内。 如果A是该行的第一个字符 - 应该拾取所有内容。 会有三种情况:
my $str = 'some before/some.A;hi99/some after A text goes here'
my $str1 = 'A some before/some.A;hi99/some after A text goes here'
my $str2 = 'some before/some.A;hi99/some after
输出应该是:
一个文字在这里
一些之前/ some.A; hi99 /一些文字后来到这里
没有
我可以匹配一个内部//但我不知道是否可以检查正则表达式中的其他两个条件?
$str =~ /([^\/]+.*[A]+.*[^\/]+)/g;
任何想法将不胜感激。
use strict;
use warnings;
while (<DATA>) {
chomp;
my $odd = 0;
my $pass = 0;
my $line = join '/', grep {$pass || (($odd ^= 1) && s/.*?A/A/ && ++$pass)} split '/';
print $line
? "(pass) - $line\n"
: "(fail)\n";
}
__DATA__
some before/some.A;hi99/some after A text goes here
A some before/some.A;hi99/some after A text goes here
some before/some.A;hi99/some after
输出
(pass) - A text goes here
(pass) - A some before/some.A;hi99/some after A text goes here
(fail)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.