Beefy Boxes and Bandwidth Generously Provided by pair Networks
Syntactic Confectionery Delight
 
PerlMonks  

Re: Detect STX and ETX hex in received string

by ColonelPanic (Friar)
on Nov 28, 2012 at 09:08 UTC ( #1005983=note: print w/replies, xml ) Need Help??


in reply to Detect STX and ETX hex in received string

Here is an example regex that will match as soon as 80 characters or an ETX is found. I used kcott's answer as a starting point.

use Modern::Perl; my $STX = 'a'; my $ETX = 'z'; my $re = qr{ [$STX] (?: (?<match>[^$ETX]{80}) | (?:(?<match>[^$ETX]{0, +79}) [$ETX])) }x; $_='a12345678za1234567890123456789012345678901234567'. '890123456789012345678901234567890123456789012345678901234567890z'; say $+{match} while (/$re/g);

Note that this uses named capture to put either set of matching parentheses into a single variable.



When's the last time you used duct tape on a duct? --Larry Wall

Replies are listed 'Best First'.
Re^2: Detect STX and ETX hex in received string
by MidLifeXis (Monsignor) on Nov 28, 2012 at 13:32 UTC

    It appears that your solution only allows for a single-character STX or ETX token, due to the check for character classes (eg [$STX]). I am presently experiencing too much of a coffee deficiency to offer an alternative.

    Update: ... and to not recognize that STX and ETX are possibly symbols for one character tokens :-)

    --MidLifeXis

      I interpreted single-character STX and ETX codes as being intrinsic to the problem. Maybe that is not so, however. Here is a multi-character solution:
      use Modern::Perl; my $STX = 'foo'; my $ETX = 'bar'; my $re = qr{ $STX (?: (?<match>.*?) $ETX | (?:(?<match>.{80}))) }x; $_='foo12345678barfoo1234567890123456789012345678901234567'. '890123456789012345678901234567890123456789012345678901234567890bar'; say substr($+{match},0,80) while (/$re/g);

      (I added a substr() to limit the matched string to 80 characters. It appears to me that it's not trivial to meet these requirements entirely within the regex...though I'm sure others will quickly prove me wrong!)



      When's the last time you used duct tape on a duct? --Larry Wall

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1005983]
help
Chatterbox?
[marioroy]: nice karlgoethebier guitar links on your homenode.
[marioroy]: The nature of the Guitar
[Discipulus]: my best with guitar is to fingerpicking some De André songs
[karlgoethebier]: Listen to Glenn: https://www. youtube.com/watch? v=SiiVK3rMxxg
[karlgoethebier]: marioroy: If you provide an email address i'll send you the full script of TNOG...
[karlgoethebier]: marioroy: Checkout also "Linear Expressions" by the same author...

How do I use this? | Other CB clients
Other Users?
Others chilling in the Monastery: (12)
As of 2017-03-24 10:14 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    Should Pluto Get Its Planethood Back?



    Results (298 votes). Check out past polls.