I believe the '.' character does not have the same special meaning within a character
class, and that's why it isn't matching what you think it does. You should check out
the YAPE::Regex::Explain module. It's great for debugging regular expressions.
-----Original Message-----
From: Ãznur Tastan [mailto:[EMAIL PROTECTED]
Sent: Tue 2/24/2004 11:56 PM
To: Perl Lists
Cc:
Subject: regular expression that doesn't match any string
Hi all
Just for fun (really no context) i was wondering how to create regular
expressions that
will never match any string.
/^[^\w\W]/ is one of them am I right? No string can start with a character
that is neither alphanumeric nor nonalhanumeric.
But why does
/^[^.\n]/ matches .
doesn't that mean the string should begin a character that is not any
character or not a newline(nothing else should be left).
Could someone enligthen me?
Below is to code I use to check.
thanks
oznur
use strict;
use warnings;
my $string="does it match";
if ($string=~/(^[^\w\W])/){
print "matches $1\n";
}
else {
print "doesn't match \n";
}
if ($string=~/(^[^.\n])/){
print "matches $1\n";
}
else {
print "doesn't match \n";
}
----- Original Message -----
From: "R. Joseph Newton" <[EMAIL PROTECTED]>
To: "Ãznur Tastan" <[EMAIL PROTECTED]>
Cc: "'Perl Lists'" <[EMAIL PROTECTED]>
Sent: Wednesday, February 25, 2004 9:09 AM
Subject: Re: how to push a double dimensional array
> Ãznur Tastan wrote:
>
>
> > Well actually storing the examples doesn't need the information for the
> > alignment but
> > if you are interested.
> > Pairwise sequence alignment is a widely used terms to visualize the
> > similarity of protein or DNA
> > sequences. So the characters denotes the aminoacids(or nucleotides in
DNAs)
> > and the conservation substitutions or deletions of give clues about
> > biological meanings actualy predict the evolution at that site of the
> > protein.
> > Substitution scoring matrices which are mostly based on frequency
analysis
> > are used to align the alignments. These are matrices that tell how
similiar
> > one aminoacid to another so to say how it is likely to be replaced by
the
> > other aminoacid. so Aligning L with L will have positive score that you
can
> > get from the scoring matrice entry yet the gaps will be penalized
although
> > mismatches will be penalized.
> > The alignment is obtained by using a dynamic programing appraach,
> > Needleman-Wunch algorithm.
> > The score is the sum of the score of aligning each character.
> >
> > >
> > > I await the conclusion and enlightment as this thread has proven
> > > interesting. :)
> > >
> > > Thx/Sx
>
> Okay. This is getting a bit more clear. Can you always count on being
able to
> express the score as an integer? If so, this can be pretty
straightforward, but
> there will be a Perl learning curve. It sounds to me like you really need
a
> class for these alignments. The meaning of their internal data is very
specific
> to this context. You could use a hash for any particular alignment, of
course,
> but then you are re-doing the work with each one. You class could start
out as
> simple as the structs you were seeking earlier. Perlis very liberal [too
> liberal IMHO] about access to data members of its objects. So your
package
> could start out as simple as:
>
> package SequenceAlignment;
>
> use strict;
> use warnings;
>
> use Exporter;
>
> my @ISA = Exporter;
>
> sub new {
> my $class = shift;
> my ($sequence1, $sequence2, $alignment_score) = @_;
>
> my $self = {
> 'base sequence' => $sequence1,
> comparison sequence' => $sequence2,
> 'alignment score' => $alignment_score
> }
>
> bless $self, $class;
> return $self;
> }
>
> Even without any methods defined, this at least gives you a framework for
> storing the alignments. Since you obviously have some fairly specific
> operations relating to them, you will want to create some methods to
manipulate
> the data in context, though.
>
> One great advantage to this approach is that you can pass the reference
returned
> by the constructor above in a very lightweight manner. When you need
> information from the reference itself, you can access the information
through
> this reference:
>
> my $alignment = SequenceAlignment->new ('AGGGTCATCCTTA', CCTTAGTTAA___',
2);
> # Sorry if the data above fails any sanity tests
> Quick and dirty access:
> my $base_sequence = $alignment->{'base sequence'}
>
> Object-oriented access;
> my $base_sequence = $alignment->get_base_sequence();
>
> With the second access style shown above, you have the advantage that you
can
> define the get_base_sequence() method so as to take into account any
factors
> relevant to handling this particular form of data.
>
> Joseph
>
>
> --
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> <http://learn.perl.org/> <http://learn.perl.org/first-response>
>
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>