我知道,除了使用定期表达的某种特性外,很容易与任何东西相匹配。
$text = "ab ac ad";
$text =~ s/[^c]*//g; # Match anything, except c.
$text is now "c".
我不知道如何用“例外”代替特征。 除“......”外,我怎么会“做任何事情? Tried [^(ac)]和[^”c]都没有成功。
完全有可能?
我知道,除了使用定期表达的某种特性外,很容易与任何东西相匹配。
$text = "ab ac ad";
$text =~ s/[^c]*//g; # Match anything, except c.
$text is now "c".
我不知道如何用“例外”代替特征。 除“......”外,我怎么会“做任何事情? Tried [^(ac)]和[^”c]都没有成功。
完全有可能?
下面回答Bart K.评论中第二句话所理解的问题:
>> $text= ab ac ad ;
>> $text =~ s/(ac)|./1/g;
>> print $text;
ac
此外, abacadac
-> acac
应当指出的是,在大多数实际应用中,负面的头盔证明比这种办法更有用。
如果你只想检查一下,扼杀是否含有“ac”,就只能使用否定。
$text = "ab ac ad";
print "ac not found" if $text !~ /ac/;
或
print "ac not found" unless $text =~ /ac/;
$text =~ s/[^c]*//g; // Match anything, except c.
@ssn, A couple of comments about your question:
How would I "match anything, except ac " ? Tried [^(ac)] and [^"ac"] without success.
请阅读关于品级的文件(见“perldoc perlre”,载于您的指挥线,或在线http://perldoc.perl.org/perlre.html)-请参看:对于方括号内的特性清单,Re将“从名单上删除任何特性”。 定购单并不相关,没有“指示”,只有一份特性清单:“()”和双重报价在方括号内也没有特别意义。
现在我不确切地确定,为什么你重新谈论配对,而是举出替代的例子。 但是,看看看看看看看看看看看看看看看看看看看看上去的“ac”是否与你刚才需要否定的匹配:
use strict; use warnings;
my $text = "ab ac ad";
if ($text !~ m/ac/) {
print "Yey the text doesn t match ac !
"; # this shouldn t be printed
}
你们有一系列案文,其中含有多个次体的发生。 如果你只想围绕次指示的案文,就只删除次指示的所有发生:
$text =~ s/ac//g;
如果你想要相反的话——除次指示的所有发生情况外,删除所有案文,我建议:
use strict; use warnings;
my $text = "ab ac ad ac ae";
my $sub_str = "ac";
my @captured = $text =~ m/($sub_str)/g;
my $num = scalar @captured;
print (($sub_str x $num) . "
");
这基本上算出在案文中次指示数的几倍,并用“x”操作器打印次数。 我不敢说谎,我敢肯定的是,能够找到更好的东西。
http://www.un.org。
my $text = "ab ac ad";
$text !~ s/(ac)//g; # Match anything, except ac.
这是不正确的,因为它在“使用警告”下产生了警告(“在无效的情况下不使用具有约束力的消极模式”(!~),而且除了删除案文中所有“ac”的字句外,没有做任何事情。
$text =~ s/ac//g;
<>Update: 在对你的提问发表评论时,你提到你想要清理离心标记,删除<条码>{>条码>......<条码>>>。 Perl FAQ第6节涉及这一点:。
考虑以下方案:
#! /usr/bin/perl
use warnings;
use strict;
use Text::Balanced qw/ extract_tagged /;
# for demo only
*ARGV = *DATA;
while (<>) {
if (s/^(.+?)(?={{)//) {
print $1;
my(undef,$after) = extract_tagged $_, "{{" => "}}";
if (defined $after) {
$_ = $after;
redo;
}
}
print;
}
__DATA__
Lorem ipsum dolor sit amet, consectetur
adipiscing elit. {{delete me}} Sed quis
nulla ut dolor {{me too}} fringilla
mollis {{ quis {{ ac }} erat.
其产出:
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed quis nulla ut dolor fringilla mollis {{ quis erat.
具体事例是,你可以使用
$text =~ s/[^ac]|a(?!c)|(?<!a)c//g;
仅删除<代码>a或c
。 当它们是<代码>ac序列的序号。
总的来说,这是经常表达的骗局。
页: 1 随后是<条码>,<条码>。 往往比较清楚,更容易单独检查。 例如:
die "invalid string ($str)"
if $str =~ /^.*foos*bar/;
页: 1 回答类似问题,我在会上写道
my $nofoo = qr/
( [^f] |
f (?! o) |
fo (?! o s* bar)
)*
/x;
my $pattern = qr/^ $nofoo bar /x;
为了解这一复杂情况,将How Regexes Work改为Mark Dominus。 该发动机将定期表述汇编成国家机器。 当时间相匹配时,它为国家机器提供素材,并检查国家机器是否在接收国完成。 为了排除指示,你必须指定一个机器,接收除特定顺序外的所有投入。
什么可能帮助是<代码>/v的常规表述转换,这种转换会像往常一样创建国家机器,然后补充所有国家的接受状态。 很难说,与单独检查相比,这是否真正有用,因为“<代码>/v的定期表述可能仍然使人感到惊讶,就像以不同的方式。
如果你对理论细节感兴趣,见。 Peter Linz介绍正式语言和自主语言。
您可使用指数
$text = "ab ac ad";
print "ac not found" if ( index($text,"ac") == -1 );
为您的目的,你可以轻松地修改这一规定。
use Test::More 0.88;
#Match any whole text that does not contain a string
my $re=qr/^(?:(?!ac).)*$/;
my $str= ab ac ad ;
ok(!$str=~$re);
$str= ab af ad ;
ok($str=~$re);
done_testing();
I am building a Web interface to monitor an embedded system. I have built a Perl script which runs remote commands and gathers output from that system. Now what I need is a Web interface which makes ...
How do I tell what type of value is in a Perl variable? $x might be a scalar, a ref to an array or a ref to a hash (or maybe other things).
When I try a "chdir" with a filehandle as argument, "chdir" returns 0 and a pwd returns still the same directory. Should that be so? I tried this, because in the documentation to chdir I found: "...
I ve read the doc for GetOptions but I can t seem to find what I need... (maybe I am blind) What I want to do is to parse command line like this myperlscript.pl -mode [sth] [inputfile] I can use ...
I m a little confused about what is going on in Perl constructors. I found these two examples perldoc perlbot. package Foo; #In Perl, the constructor is just a subroutine called new. sub new { #I ...
I would like to submit a form to a CGI script localy (w3c-markup-validator), but it is too slow using curl and apache, I want to use this CGI script more than 5,000 times in an another script. and ...
So I m running perl 5.10 on a core 2 duo macbook pro compiled with threading support: usethreads=define, useithreads=define. I ve got a simple script to read 4 gzipped files containing aroud 750000 ...
A Google search yields a number of results - but which ones are the best? The Perl site appears to contain two - perlboot and perltoot. I m reading these now, but what else is out there? Note: I ve ...