tcl regexp
Sponsored Links
Sponsored Links
Secleted [ 0 ] software to compare
Results 1 - 15 of about 323
Visual REGEXP 3.1
Visual REGEXP lets you easily design and debug regular expressions. more>>
Visual REGEXP project can easily design and debug regular expressions by providing a graphical visualization of the expression and its matches on a sample of your choice.
Version restrictions:
- some regexp can consume a lot of CPU time. This seems to be caused by the use of -all, -inline and -indices flags together.
- when a subexpression is not matched (empty match), the last character of the previous match are coloured. This is due to a problem in Tcl (bug submitted to Scriptics).
Enhancements:
- new version done by Martin Lemburg. Many thanks, Martin.
- it is now a tcl 8.5a4 starpack
- GUI layout changed to be based on a paned window
- GUI code looks different, to be more ergonomic
- the informational labels (replacements & matches) are now sunken
- there are now additional the "first" and "last" navigation buttons
- there is a new option to navigate through matches or matches and submatches
- the displayed count of matches is changed to display the current and the count of matches used for navigation (probably changes, if the new navigation option is changed)
- the replace widget is disabled on startup
- the tcl console is added to the help menu
- the key bindings inside the regexp text widget changed a bit to allow for expanded regexp (-expanded or (?x)) to contain tabs and newlines. Tabs are created with Control-Tab and newlines with Control-Return. Additional with Control-C|V|X (not c|v|x) it is possible to use the clipboard like with Control|Shift-Insert, Shift-Delete.
<<lessVersion restrictions:
- some regexp can consume a lot of CPU time. This seems to be caused by the use of -all, -inline and -indices flags together.
- when a subexpression is not matched (empty match), the last character of the previous match are coloured. This is due to a problem in Tcl (bug submitted to Scriptics).
Enhancements:
- new version done by Martin Lemburg. Many thanks, Martin.
- it is now a tcl 8.5a4 starpack
- GUI layout changed to be based on a paned window
- GUI code looks different, to be more ergonomic
- the informational labels (replacements & matches) are now sunken
- there are now additional the "first" and "last" navigation buttons
- there is a new option to navigate through matches or matches and submatches
- the displayed count of matches is changed to display the current and the count of matches used for navigation (probably changes, if the new navigation option is changed)
- the replace widget is disabled on startup
- the tcl console is added to the help menu
- the key bindings inside the regexp text widget changed a bit to allow for expanded regexp (-expanded or (?x)) to contain tabs and newlines. Tabs are created with Control-Tab and newlines with Control-Return. Additional with Control-C|V|X (not c|v|x) it is possible to use the clipboard like with Control|Shift-Insert, Shift-Delete.
Download (0.025MB)
Added: 2006-03-08 License: GPL (GNU General Public License) Price:
1329 downloads
Regexp::Log 0.04
Regexp::Log is a Perl base class for log files regexp builders. more>>
Regexp::Log is a Perl base class for log files regexp builders.
SYNOPSIS
my $foo = Regexp::Log::Foo->new(
format => custom %a %b %c/%d,
capture => [qw( host code )],
);
# the format() and capture() methods can be used to set or get
$foo->format(custom %g %e %a %w/%s %c);
$foo->capture(qw( host code ));
# this is necessary to know in which order
# we will receive the captured fields from the regexp
my @fields = $foo->capture;
# the all-powerful capturing regexp :-)
my $re = $foo->regexp;
while () {
my %data;
@data{@fields} = /$re/; # no need for /o, its a compiled regexp
# now munge the fields
...
}
<<lessSYNOPSIS
my $foo = Regexp::Log::Foo->new(
format => custom %a %b %c/%d,
capture => [qw( host code )],
);
# the format() and capture() methods can be used to set or get
$foo->format(custom %g %e %a %w/%s %c);
$foo->capture(qw( host code ));
# this is necessary to know in which order
# we will receive the captured fields from the regexp
my @fields = $foo->capture;
# the all-powerful capturing regexp :-)
my $re = $foo->regexp;
while () {
my %data;
@data{@fields} = /$re/; # no need for /o, its a compiled regexp
# now munge the fields
...
}
Download (0.008MB)
Added: 2007-08-02 License: Perl Artistic License Price:
813 downloads
ShiftJIS::Regexp 1.00
ShiftJIS::Regexp contains regular expressions in Shift-JIS. more>>
ShiftJIS::Regexp contains regular expressions in Shift-JIS.
SYNOPSIS
use ShiftJIS::Regexp qw(:all);
match($string, p{Hiragana}{2}p{Digit}{2});
match($string, pH{2}pD{2});
# these two are equivalent:
This module provides some functions to use regular expressions in Shift-JIS on the byte-oriented perl.
The legal Shift-JIS character in this module must match the following regular expression:
[x00-x7FxA1-xDF]|[x81-x9FxE0-xFC][x40-x7Ex80-xFC]
To avoid false matching in multibyte encoding, this module uses anchoring technique to ensure each matching position places at the character boundaries.
cf. perlfaq6, "How can I match strings with multibyte characters?"
Functions
re(PATTERN)
re(PATTERN, MODIFIER)
Returns a regular expression parsable by the byte-oriented perl.
PATTERN is specified as a string. MODIFIER is specified as a string. Modifiers in the following list are allowed.
i case-insensitive pattern (only for ascii alphabets)
I case-insensitive pattern (greek, cyrillic, fullwidth latin)
j hiragana-katakana-insensitive pattern (but halfwidth katakana
are not considered.)
s treat string as single line
m treat string as multiple lines
x ignore whitespace (i.e. [x20nrtf]) unless backslashed
or inside a character class; but comments are not recognized!
o once parsed (not compiled!) and the result is cached internally.
o modifier
while ( ) {
print replace($_, (perl), $1, igo);
}
is more efficient than
while ( ) {
print replace($_, (perl), $1, ig);
}
because in the latter case the pattern is parsed every time
whenever the function is called.
match(STRING, PATTERN)
match(STRING, PATTERN, MODIFIER)
An emulation of m// operator aware of Shift-JIS. But, to emulate @list = $string =~ m/PATTERN/g, the pattern should be parenthesized (capturing parentheses are not added automatically).
@list = match($string, pH, g); # wrong; returns garbage!
@list = match($string,(pH),g); # good
PATTERN is specified as a string. MODIFIER is specified as a string.
i,I,j,s,m,x,o please see re().
g match globally
z tell the function the pattern matches an empty string
(sorry, due to the poor auto-detection)
replace(STRING or SCALAR REF, PATTERN, REPLACEMENT)
replace(STRING or SCALAR REF, PATTERN, REPLACEMENT, MODIFIER)
An emulation of s/// operator but aware of Shift-JIS.
If a reference to a scalar is specified as the first argument, substitutes the referent scalar and returns the number of substitutions made. If a string (not a reference) is specified as the first argument, returns the substituted string and the specified string is unaffected.
MODIFIER is specified as a string.
i,I,j,s,m,x,o please see re().
g,z please see match().
jsplit(PATTERN or ARRAY REF of [PATTERN, MODIFIER], STRING)
jsplit(PATTERN or ARRAY REF of [PATTERN, MODIFIER], STRING, LIMIT)
An emulation of CORE::split but aware of Shift-JIS.
In scalar/void context, it does not split into the @_ array; in scalar context, only returns the number of fields found.
PATTERN is specified as a string. But as PATTERN has no special meaning; it splits the string on a single space similarly to CORE::split / /.
When you want to split the string on whitespace, pass an undefined value as PATTERN or use the splitspace() function.
jsplit(undef, " x81x40 This is x81x40 perl.");
splitspace(" x81x40 This is x81x40 perl.");
# (This, is, perl.)
If you want to pass pattern with modifiers, specify an arrayref of [PATTERN, MODIFIER] as the first argument. You can also use "Embedded Modifiers").
MODIFIER is specified as a string.
i,I,j,s,m,x,o please see re().
splitspace(STRING)
splitspace(STRING, LIMIT)
This function emulates CORE::split( , STRING, LIMIT). It returns a list given by split STRING on whitespace including "x81x40" (IDEOGRAPHIC SPACE). Leading whitespace characters do not produce any field.
Note: splitspace(STRING, LIMIT) is equivalent to jsplit(undef, STRING, LIMIT).
splitchar(STRING)
splitchar(STRING, LIMIT)
This function emulates CORE::split(//, STRING, LIMIT). It returns a list given by split of STRING into characters.
Note: splitchar(STRING, LIMIT) is equivalent to jsplit(, STRING, LIMIT).
<<lessSYNOPSIS
use ShiftJIS::Regexp qw(:all);
match($string, p{Hiragana}{2}p{Digit}{2});
match($string, pH{2}pD{2});
# these two are equivalent:
This module provides some functions to use regular expressions in Shift-JIS on the byte-oriented perl.
The legal Shift-JIS character in this module must match the following regular expression:
[x00-x7FxA1-xDF]|[x81-x9FxE0-xFC][x40-x7Ex80-xFC]
To avoid false matching in multibyte encoding, this module uses anchoring technique to ensure each matching position places at the character boundaries.
cf. perlfaq6, "How can I match strings with multibyte characters?"
Functions
re(PATTERN)
re(PATTERN, MODIFIER)
Returns a regular expression parsable by the byte-oriented perl.
PATTERN is specified as a string. MODIFIER is specified as a string. Modifiers in the following list are allowed.
i case-insensitive pattern (only for ascii alphabets)
I case-insensitive pattern (greek, cyrillic, fullwidth latin)
j hiragana-katakana-insensitive pattern (but halfwidth katakana
are not considered.)
s treat string as single line
m treat string as multiple lines
x ignore whitespace (i.e. [x20nrtf]) unless backslashed
or inside a character class; but comments are not recognized!
o once parsed (not compiled!) and the result is cached internally.
o modifier
while ( ) {
print replace($_, (perl), $1, igo);
}
is more efficient than
while ( ) {
print replace($_, (perl), $1, ig);
}
because in the latter case the pattern is parsed every time
whenever the function is called.
match(STRING, PATTERN)
match(STRING, PATTERN, MODIFIER)
An emulation of m// operator aware of Shift-JIS. But, to emulate @list = $string =~ m/PATTERN/g, the pattern should be parenthesized (capturing parentheses are not added automatically).
@list = match($string, pH, g); # wrong; returns garbage!
@list = match($string,(pH),g); # good
PATTERN is specified as a string. MODIFIER is specified as a string.
i,I,j,s,m,x,o please see re().
g match globally
z tell the function the pattern matches an empty string
(sorry, due to the poor auto-detection)
replace(STRING or SCALAR REF, PATTERN, REPLACEMENT)
replace(STRING or SCALAR REF, PATTERN, REPLACEMENT, MODIFIER)
An emulation of s/// operator but aware of Shift-JIS.
If a reference to a scalar is specified as the first argument, substitutes the referent scalar and returns the number of substitutions made. If a string (not a reference) is specified as the first argument, returns the substituted string and the specified string is unaffected.
MODIFIER is specified as a string.
i,I,j,s,m,x,o please see re().
g,z please see match().
jsplit(PATTERN or ARRAY REF of [PATTERN, MODIFIER], STRING)
jsplit(PATTERN or ARRAY REF of [PATTERN, MODIFIER], STRING, LIMIT)
An emulation of CORE::split but aware of Shift-JIS.
In scalar/void context, it does not split into the @_ array; in scalar context, only returns the number of fields found.
PATTERN is specified as a string. But as PATTERN has no special meaning; it splits the string on a single space similarly to CORE::split / /.
When you want to split the string on whitespace, pass an undefined value as PATTERN or use the splitspace() function.
jsplit(undef, " x81x40 This is x81x40 perl.");
splitspace(" x81x40 This is x81x40 perl.");
# (This, is, perl.)
If you want to pass pattern with modifiers, specify an arrayref of [PATTERN, MODIFIER] as the first argument. You can also use "Embedded Modifiers").
MODIFIER is specified as a string.
i,I,j,s,m,x,o please see re().
splitspace(STRING)
splitspace(STRING, LIMIT)
This function emulates CORE::split( , STRING, LIMIT). It returns a list given by split STRING on whitespace including "x81x40" (IDEOGRAPHIC SPACE). Leading whitespace characters do not produce any field.
Note: splitspace(STRING, LIMIT) is equivalent to jsplit(undef, STRING, LIMIT).
splitchar(STRING)
splitchar(STRING, LIMIT)
This function emulates CORE::split(//, STRING, LIMIT). It returns a list given by split of STRING into characters.
Note: splitchar(STRING, LIMIT) is equivalent to jsplit(, STRING, LIMIT).
Download (0.035MB)
Added: 2007-08-08 License: Perl Artistic License Price:
811 downloads
Search::Tools::RegExp 0.06
Search::Tools::RegExp is a Perl module to build regular expressions from search queries. more>>
Search::Tools::RegExp is a Perl module to build regular expressions from search queries.
SYNOPSIS
my $regexp = Search::Tools::RegExp->new();
my $kw = $regexp->build(the quick brown fox);
for my $w ($kw->keywords)
{
my $r = $kw->re( $w );
# the word itself
printf("the word is %sn", $r->word);
# is it flagged as a phrase?
print "the word is a phrasen" if $r->phrase;
# each of these are regular expressions
print $r->plain;
print $r->html;
}
Build regular expressions for a string of text.
All text is converted to UTF-8 automatically if it isnt already, via the Search:Tools::Keywords module.
<<lessSYNOPSIS
my $regexp = Search::Tools::RegExp->new();
my $kw = $regexp->build(the quick brown fox);
for my $w ($kw->keywords)
{
my $r = $kw->re( $w );
# the word itself
printf("the word is %sn", $r->word);
# is it flagged as a phrase?
print "the word is a phrasen" if $r->phrase;
# each of these are regular expressions
print $r->plain;
print $r->html;
}
Build regular expressions for a string of text.
All text is converted to UTF-8 automatically if it isnt already, via the Search:Tools::Keywords module.
Download (0.048MB)
Added: 2006-10-19 License: Perl Artistic License Price:
1100 downloads
eTcl 1.0 RC22
eTcl is a batteries-included , thread-enabled Tcl/Tk runtime, available as a single standalone executable. more>>
eTcl is a "batteries-included", thread-enabled Tcl/Tk runtime, available as a single standalone executable. eTcl includes several popular extensions (Sqlite, Thread, Zlib, ...), together with a Tcl wrapper for the Pixane image processing library.
Installation:
Just copy executable wherever you want on your device (memory or storage card), and launch it.
- Unobstrusive executable. No registry to set, no external dependencies.
- Standalone executable. Tcl and Tk scripts packed into executable (using VFS). Optimized startup time.
New Tcl user experience on PocketPC
- Optimized for XScale devices
- Faster Arc/Chord/Pie emulation, improved for ARM architecture without FPU
- Efficient WSAAsyncSelect() emulation. Sockets, and fileevents on sockets, should be fully functionnal (in both client and server modes)
- Support for native menu
- Improved native look and feel.
- Windows Mobile specific extension: manage SIP, change (X) button action (closing Correct handling of mouse (actually touchscreen) events
- Support for intercepting hotkeys (calendar, notes, etc...)
- New porting approach, based on very minor changes to generic Win32 port (and no changes to generic part of Tcl/Tk distrib).
- Patch to Tcl or Tk distribution is only few kilobytes large, everything else has been moved into a minimal emulation library. This should allow us to keep synced with future Tcl/Tk release.
- Easy build process. Nothing but Evc4 and a native Tcl interpreter required to build binaries for all target architectures supported by Evc (Cygwin, external libraries, etc... not required)
- Works fine into Microsoft Pocket PC 2003 Emulator. Debugging code made easier
Included native extensions:
- Pixane: script your image transformation, support for reading and writing several popular image formats (PNG, JPEG), support for TrueType fonts
- Sqlite 3: a self-contained, embeddable, zero-configuration SQL database engine
- Zlib: native deflate/inflate support
- Zipfs: easily Mount your ZIP files into Tcl Virtual Filesystem
Included Pure Tcl extensions:
- EvoTcl: A very large set of tcl utilities (OOP, Database, HTML/XML parsing, ...). See http://www.evolane.com/software/evotcl/
Enhancements:
- This release focuses on performance optimization (especially for WinCE) and code stabilization.
- It adds support for reading tclkits, together with an automatic tclkit to eTcl kit converter.
- It embeds up-to-date versions of several built-in packages, such as sqlite 3.4.1, libpng 1.2.18, and tile and tkhtml3 CVS snapshots.
- Tile has been moved into the normal version.
- The Mac OS X bundle declares associations so eTcl kits can be launched directly from the Finder.
- Binaries for linux-powerpc have been made compatible with Linux on Playstation 3.
<<lessInstallation:
Just copy executable wherever you want on your device (memory or storage card), and launch it.
- Unobstrusive executable. No registry to set, no external dependencies.
- Standalone executable. Tcl and Tk scripts packed into executable (using VFS). Optimized startup time.
New Tcl user experience on PocketPC
- Optimized for XScale devices
- Faster Arc/Chord/Pie emulation, improved for ARM architecture without FPU
- Efficient WSAAsyncSelect() emulation. Sockets, and fileevents on sockets, should be fully functionnal (in both client and server modes)
- Support for native menu
- Improved native look and feel.
- Windows Mobile specific extension: manage SIP, change (X) button action (closing Correct handling of mouse (actually touchscreen) events
- Support for intercepting hotkeys (calendar, notes, etc...)
- New porting approach, based on very minor changes to generic Win32 port (and no changes to generic part of Tcl/Tk distrib).
- Patch to Tcl or Tk distribution is only few kilobytes large, everything else has been moved into a minimal emulation library. This should allow us to keep synced with future Tcl/Tk release.
- Easy build process. Nothing but Evc4 and a native Tcl interpreter required to build binaries for all target architectures supported by Evc (Cygwin, external libraries, etc... not required)
- Works fine into Microsoft Pocket PC 2003 Emulator. Debugging code made easier
Included native extensions:
- Pixane: script your image transformation, support for reading and writing several popular image formats (PNG, JPEG), support for TrueType fonts
- Sqlite 3: a self-contained, embeddable, zero-configuration SQL database engine
- Zlib: native deflate/inflate support
- Zipfs: easily Mount your ZIP files into Tcl Virtual Filesystem
Included Pure Tcl extensions:
- EvoTcl: A very large set of tcl utilities (OOP, Database, HTML/XML parsing, ...). See http://www.evolane.com/software/evotcl/
Enhancements:
- This release focuses on performance optimization (especially for WinCE) and code stabilization.
- It adds support for reading tclkits, together with an automatic tclkit to eTcl kit converter.
- It embeds up-to-date versions of several built-in packages, such as sqlite 3.4.1, libpng 1.2.18, and tile and tkhtml3 CVS snapshots.
- Tile has been moved into the normal version.
- The Mac OS X bundle declares associations so eTcl kits can be launched directly from the Finder.
- Binaries for linux-powerpc have been made compatible with Linux on Playstation 3.
Download (3.4MB)
Added: 2007-08-07 License: Other/Proprietary License Price:
811 downloads
Regexp::Genex 0.07
Regexp::Genex - get the strings a regex will match, with a regex. more>>
Regexp::Genex - get the strings a regex will match, with a regex.
SYNPOSIS
# first try:
$ perl -MRegexp::Genex=:all -le print for strings(qr/a(b|c)d{2,3}e*/)
$ perl -x `pmpath Regexp::Genex`
#!/usr/bin/perl -l
use Regexp::Genex qw(:all);
$regex = shift || "a(b|c)d{2,4}?";
print "Trying: $regex";
print for strings($regex);
# abdd
# abddd
# abdddd
# acdd
# acddd
# acdddd
print "nThe regex code for that was:nqr/";
print strings_rx($regex);
print "/xn";
my $generator = generator($regex);
print "Taking first two using generator";
print $generator->() for 1..2;
my $big_rx = b*?c*?d*?; # * becomes {0,20}
my $big = generator($big_rx, ($max_length = 100) );
print "Taking string 100 of $big_rx";
print $big->(100); # (caveats below)
# ccccdddddddddddddddd NOT dx100 as you may expect
<<lessSYNPOSIS
# first try:
$ perl -MRegexp::Genex=:all -le print for strings(qr/a(b|c)d{2,3}e*/)
$ perl -x `pmpath Regexp::Genex`
#!/usr/bin/perl -l
use Regexp::Genex qw(:all);
$regex = shift || "a(b|c)d{2,4}?";
print "Trying: $regex";
print for strings($regex);
# abdd
# abddd
# abdddd
# acdd
# acddd
# acdddd
print "nThe regex code for that was:nqr/";
print strings_rx($regex);
print "/xn";
my $generator = generator($regex);
print "Taking first two using generator";
print $generator->() for 1..2;
my $big_rx = b*?c*?d*?; # * becomes {0,20}
my $big = generator($big_rx, ($max_length = 100) );
print "Taking string 100 of $big_rx";
print $big->(100); # (caveats below)
# ccccdddddddddddddddd NOT dx100 as you may expect
Download (0.008MB)
Added: 2007-08-16 License: Perl Artistic License Price:
800 downloads
Regexp::Parser 0.20
Regexp::Parser is a Perl module for parsing regexes. more>>
Regexp::Parser is a Perl module for parsing regexes.
This module parses regular expressions (regexes). Its default "grammar" is Perl 5.8.4s regex set. Grammar is quoted because the module does not so much define a grammar as let each matched node state what it expects to match next, but there is not currently a way of extracting a complete grammar. This may change in future versions.
This module is designed as a replacement (though not drop-in) for my old YAPE::Regex modules.
USAGE:
Creating an Instance
To use this module as is, load it, and create an instance:
use Regexp::Parser;
my $parser = Regexp::Parser->new;
Setting a Regex
To have the parser work on a specific regex, you can do use any of the following methods:
$parser = Regexp::Parser->new($regex)
You can send the regex to be parsed as the argument to the constructor.
$parser->regex($regex)
Clears the parsers memory and sets $regex as the regex to be parsed.
These two approaches do an initial pass over the regex to make sure it is well-formed -- any warnings or errors will be determined during this initial pass.
<<lessThis module parses regular expressions (regexes). Its default "grammar" is Perl 5.8.4s regex set. Grammar is quoted because the module does not so much define a grammar as let each matched node state what it expects to match next, but there is not currently a way of extracting a complete grammar. This may change in future versions.
This module is designed as a replacement (though not drop-in) for my old YAPE::Regex modules.
USAGE:
Creating an Instance
To use this module as is, load it, and create an instance:
use Regexp::Parser;
my $parser = Regexp::Parser->new;
Setting a Regex
To have the parser work on a specific regex, you can do use any of the following methods:
$parser = Regexp::Parser->new($regex)
You can send the regex to be parsed as the argument to the constructor.
$parser->regex($regex)
Clears the parsers memory and sets $regex as the regex to be parsed.
These two approaches do an initial pass over the regex to make sure it is well-formed -- any warnings or errors will be determined during this initial pass.
Download (0.040MB)
Added: 2006-09-25 License: Perl Artistic License Price:
1125 downloads
Regexp::Ignore 0.03
Regexp::Ignore is a Perl module that let us ignore unwanted parts, while parsing text. more>>
Regexp::Ignore is a Perl module that let us ignore unwanted parts, while parsing text.
WARNING
This is an alpha code. Really. It was written in the end of 2001. It is not yet checked much. The only reason I submit it to CPAN that early is to get feedback about the idea, and hopefully to get some help in finding the many bugs that must still be in it. In our company we use this code, though, and for our needs it runs well.
SYNOPSIS
use Regexp::IgnoreXXX;
my $rei = new Regexp::IgnoreXXX($text,
"");
# split the wanted text from the unwanted text
$rei->split();
# use substitution function
$rei->s((var)_(d+), $2$1, gi);
$rei->s((d+):(d+), $2:$1);
# merge back to get the resulted text
my $changed_text = $rei->merge();
Markup languages, like HTML, are difficult to parse. The reason is that you can have a line like:
< font size=+1 >H< /font >ello < font size=+1 >W< /font >orld
How can we find the string "Hello World", in the above line, and replace it by "Hello Universe" (which is a lot deeper)? Or how can we run a speller on the text and replace the mistakes with suggestions for the correct spelling?
This module come to help you doing exactly that.
Actually the module let you first split the text to the parts you are interested in and the unwanted parts. For example, all the HTML tags can be taken as unwanted parts.
Then it let you parse the part you are interested in (while totally ignoring the unwanted parts).
In the end it let you merge back the unwanted parts with the possibly changed parts you were interested in.
There is just one catch. It uses the assumption that when you replace the above "Hello World" to "Hello Universe", all the unwanted parts between the start of the match to the end of the match, will be pushed after the text that will replace the match. This is not really understood right? Look at the example:
The text:
< font size=+1 >H< /font >ello < font size=+1 >W< /font >orld
will be first split and we will get the "cleaned" text:
Hello World
Then we can parse it using something like:
s/Hello World/Hello Universe/;
This will give us the changed "cleaned" text:
Hello Universe
When we will merge with the unwanted parts we will get
< font size=+1 >Hello Universe< /font >< font size=+1 >< /font >
So, the unwanted parts in the match were pushed after the replacer.
<<lessWARNING
This is an alpha code. Really. It was written in the end of 2001. It is not yet checked much. The only reason I submit it to CPAN that early is to get feedback about the idea, and hopefully to get some help in finding the many bugs that must still be in it. In our company we use this code, though, and for our needs it runs well.
SYNOPSIS
use Regexp::IgnoreXXX;
my $rei = new Regexp::IgnoreXXX($text,
"");
# split the wanted text from the unwanted text
$rei->split();
# use substitution function
$rei->s((var)_(d+), $2$1, gi);
$rei->s((d+):(d+), $2:$1);
# merge back to get the resulted text
my $changed_text = $rei->merge();
Markup languages, like HTML, are difficult to parse. The reason is that you can have a line like:
< font size=+1 >H< /font >ello < font size=+1 >W< /font >orld
How can we find the string "Hello World", in the above line, and replace it by "Hello Universe" (which is a lot deeper)? Or how can we run a speller on the text and replace the mistakes with suggestions for the correct spelling?
This module come to help you doing exactly that.
Actually the module let you first split the text to the parts you are interested in and the unwanted parts. For example, all the HTML tags can be taken as unwanted parts.
Then it let you parse the part you are interested in (while totally ignoring the unwanted parts).
In the end it let you merge back the unwanted parts with the possibly changed parts you were interested in.
There is just one catch. It uses the assumption that when you replace the above "Hello World" to "Hello Universe", all the unwanted parts between the start of the match to the end of the match, will be pushed after the text that will replace the match. This is not really understood right? Look at the example:
The text:
< font size=+1 >H< /font >ello < font size=+1 >W< /font >orld
will be first split and we will get the "cleaned" text:
Hello World
Then we can parse it using something like:
s/Hello World/Hello Universe/;
This will give us the changed "cleaned" text:
Hello Universe
When we will merge with the unwanted parts we will get
< font size=+1 >Hello Universe< /font >< font size=+1 >< /font >
So, the unwanted parts in the match were pushed after the replacer.
Download (0.070MB)
Added: 2007-06-29 License: Perl Artistic License Price:
847 downloads
Wtcl 1.0.0
Wtcl is a Tcl module for Apache. more>>
Wtcl is a Tcl module for Apache. It provides an embedded, persistent Tcl interpreter and a set of commands for developing dynamic Tcl-based web pages. mod_wtcl currently works with Tcl >= 8.1 and Apache 1.3.
Wtcl Commands
Web Request
params, queryParams, postParams, cookies, uploadSettings, uploads, upload, requestHeaders
Web Response
status, contentType, headers, cookie, responseCookies, sendHeaders, redirect, successHeaders
Session
session, procSession, dbSession
Page
include, includeString, loader, loaderInfo, pageIndex, pageStack
Server
serverVars, events, atEnd, virtual, serverLog, logLevel, printContext, workerInfo, taskInfo, requestTime, elapsedTime, sleep, wtVersion
Web Utilities
htmlEncode, urlEncode, urlDecode
Table Collection Utilities
table, appTable, ciTable
Application Data Source Utilities
registerDataSource, isDataSourceRegistered, openDataSource, closeDataSource, dbDriver
Hash Utilities
md5Encode
<<lessWtcl Commands
Web Request
params, queryParams, postParams, cookies, uploadSettings, uploads, upload, requestHeaders
Web Response
status, contentType, headers, cookie, responseCookies, sendHeaders, redirect, successHeaders
Session
session, procSession, dbSession
Page
include, includeString, loader, loaderInfo, pageIndex, pageStack
Server
serverVars, events, atEnd, virtual, serverLog, logLevel, printContext, workerInfo, taskInfo, requestTime, elapsedTime, sleep, wtVersion
Web Utilities
htmlEncode, urlEncode, urlDecode
Table Collection Utilities
table, appTable, ciTable
Application Data Source Utilities
registerDataSource, isDataSourceRegistered, openDataSource, closeDataSource, dbDriver
Hash Utilities
md5Encode
Download (0.18MB)
Added: 2007-05-22 License: GPL (GNU General Public License) Price:
890 downloads
Sub::Regex 0.02
Sub::Regex is a Perl module to create synonymous subroutines. more>>
Sub::Regex is a Perl module to create synonymous subroutines.
SYNOPSIS
use Sub::Regex;
sub /look(s|ing)?_for/ ($){
foobar blah blah
}
look_for(Amanda);
looks_for(Amanda);
looking_for(Amanda);
lOoKiNg_fOr(Amanda);
Sub::Regex is a small tool for users to create a subroutine with multiple names. The only thing to be done is replace the normal name of a subroutine with a regular expression. However, regexp modifiers are not allowed, and matching is all considered case-insensitive.
<<lessSYNOPSIS
use Sub::Regex;
sub /look(s|ing)?_for/ ($){
foobar blah blah
}
look_for(Amanda);
looks_for(Amanda);
looking_for(Amanda);
lOoKiNg_fOr(Amanda);
Sub::Regex is a small tool for users to create a subroutine with multiple names. The only thing to be done is replace the normal name of a subroutine with a regular expression. However, regexp modifiers are not allowed, and matching is all considered case-insensitive.
Download (0.002MB)
Added: 2007-05-03 License: Perl Artistic License Price:
905 downloads
KLMCL 0.1e
KLMCL is a graphical MUD client for KDE. more>>
KLMCL is a graphical MUD client for KDE with support for aliases, regexp triggers, spellup spells management, key bindings More detailed information can be found under DocManager: Project Documentation.
Enhancements:
- Colour codes shouldnt break between buffers now.
- ANSI sequences besides colours are gracefully ignored instead of thrown away.
- Screen selections wont disappear.
- Random minor cleanups.
<<lessEnhancements:
- Colour codes shouldnt break between buffers now.
- ANSI sequences besides colours are gracefully ignored instead of thrown away.
- Screen selections wont disappear.
- Random minor cleanups.
Download (1.43MB)
Added: 2005-09-14 License: GPL (GNU General Public License) Price:
1500 downloads
Regexp::Extended 0.01
Regexp::Extended is a Perl wrapper that extends the re module with new features. more>>
Regexp::Extended is a Perl wrapper that extends the re module with new features.
SYNOPSIS
use Regexp::Extended qw(:all);
# (?...): named parameters
$date =~ /(? d+)-(? d+)-(? d+)/;
if ("2002-10-30" =~ /$date/) {
print "The date is : $::year->[0]-$::month->[0]-$::day->[0]n";
}
# You can also access individial matches in ()* or ()+
"1234" =~ /(? d)+/;
print "Digit 1 is : $::digit->[0]n";
print "Digit 2 is : $::digit->[1]n";
...
# You can also modify individual matches
"1234" =~ /(? d)+/;
$::digit->[0] = 99;
$::digit->[1] = 88;
print "Modified string is: " . rebuild("1234"); # "998834"
# (?*...): upto a certain pattern
$text = "this is some italic text";
$text =~ /((?*)) /; # $1 = "italic"
# (?+...): upto and including a certain pattern
$text = "this is some italic text";
$text =~ /((?+))/; # $1 = "italic"
# You can also use fonctions inside patterns:
sub foo {
return "foo";
}
"foo bar" =~ /((?&foo()))/; # $1 => "foo"
Rexexp::Extended is a simple wrapper arround the perl rexexp syntax. It uses the overload module to parse constant qr// expressions and substitute known operators with an equivalent perl re.
<<lessSYNOPSIS
use Regexp::Extended qw(:all);
# (?...): named parameters
$date =~ /(? d+)-(? d+)-(? d+)/;
if ("2002-10-30" =~ /$date/) {
print "The date is : $::year->[0]-$::month->[0]-$::day->[0]n";
}
# You can also access individial matches in ()* or ()+
"1234" =~ /(? d)+/;
print "Digit 1 is : $::digit->[0]n";
print "Digit 2 is : $::digit->[1]n";
...
# You can also modify individual matches
"1234" =~ /(? d)+/;
$::digit->[0] = 99;
$::digit->[1] = 88;
print "Modified string is: " . rebuild("1234"); # "998834"
# (?*...): upto a certain pattern
$text = "this is some italic text";
$text =~ /((?*)) /; # $1 = "italic"
# (?+...): upto and including a certain pattern
$text = "this is some italic text";
$text =~ /((?+))/; # $1 = "italic"
# You can also use fonctions inside patterns:
sub foo {
return "foo";
}
"foo bar" =~ /((?&foo()))/; # $1 => "foo"
Rexexp::Extended is a simple wrapper arround the perl rexexp syntax. It uses the overload module to parse constant qr// expressions and substitute known operators with an equivalent perl re.
Download (0.005MB)
Added: 2007-04-03 License: Perl Artistic License Price:
934 downloads
Regexp::Assemble 0.28
Regexp::Assemble is Perl module to assemble multiple Regular Expressions into a single RE. more>>
Regexp::Assemble is Perl module to assemble multiple Regular Expressions into a single RE.
SYNOPSIS
use Regexp::Assemble;
my $ra = Regexp::Assemble->new;
$ra->add( ab+c );
$ra->add( ab+- );
$ra->add( awd+ );
$ra->add( ad+ );
print $ra->re; # prints a(?:w?d+|b+[-c])
Regexp::Assemble takes an arbitrary number of regular expressions and assembles them into a single regular expression (or RE) that matches all that the individual REs match.
As a result, instead of having a large list of expressions to loop over, a target string only needs to be tested against one expression. This is interesting when you have several thousand patterns to deal with. Serious effort is made to produce the smallest pattern possible.
It is also possible to track the original patterns, so that you can determine which, among the source patterns that form the assembled pattern, was the one that caused the match to occur.
You should realise that large numbers of alternations are processed in perls regular expression engine in O(n) time, not O(1). If you are still having performance problems, you should look at using a trie. Note that Perls own regular expression engine will implement trie optimisations in perl 5.10 (they are already available in perl 5.9.3 if you want to try them out). Regexp::Assemble will do the right thing when it knows its running on a a tried perl. (At least in some version after this one).
<<lessSYNOPSIS
use Regexp::Assemble;
my $ra = Regexp::Assemble->new;
$ra->add( ab+c );
$ra->add( ab+- );
$ra->add( awd+ );
$ra->add( ad+ );
print $ra->re; # prints a(?:w?d+|b+[-c])
Regexp::Assemble takes an arbitrary number of regular expressions and assembles them into a single regular expression (or RE) that matches all that the individual REs match.
As a result, instead of having a large list of expressions to loop over, a target string only needs to be tested against one expression. This is interesting when you have several thousand patterns to deal with. Serious effort is made to produce the smallest pattern possible.
It is also possible to track the original patterns, so that you can determine which, among the source patterns that form the assembled pattern, was the one that caused the match to occur.
You should realise that large numbers of alternations are processed in perls regular expression engine in O(n) time, not O(1). If you are still having performance problems, you should look at using a trie. Note that Perls own regular expression engine will implement trie optimisations in perl 5.10 (they are already available in perl 5.9.3 if you want to try them out). Regexp::Assemble will do the right thing when it knows its running on a a tried perl. (At least in some version after this one).
Download (0.080MB)
Added: 2007-04-03 License: Perl Artistic License Price:
935 downloads
ETcl 8.4.12-pl16
ETcl is a batteries-included, thread-enabled Tcl/Tk runtime, available as a single standalone executable more>>
ETcl is a "batteries-included", thread-enabled Tcl/Tk runtime, available as a single standalone executable.
ETcl library includes several popular extensions (Sqlite, Thread, Zlib, ...), together with a Tcl wrapper for the Pixane image processing library.
Evolane Tcl Engine (eTcl) is made available under the terms of the Evolane Community License.
Enhancements:
- The Pixane code has been reviewed to remove a memory leak, to improve graphic file format detection, and to fix transparency handling when loading Tk photos using Pixane.
- The compiler options for the Windows Mobile port have been modified to work around a broken executable when optimizing for size vs. speed.
- Anyone using eTcl on this architecture may experience instability with previous releases, and should probably upgrade.
<<lessETcl library includes several popular extensions (Sqlite, Thread, Zlib, ...), together with a Tcl wrapper for the Pixane image processing library.
Evolane Tcl Engine (eTcl) is made available under the terms of the Evolane Community License.
Enhancements:
- The Pixane code has been reviewed to remove a memory leak, to improve graphic file format detection, and to fix transparency handling when loading Tk photos using Pixane.
- The compiler options for the Windows Mobile port have been modified to work around a broken executable when optimizing for size vs. speed.
- Anyone using eTcl on this architecture may experience instability with previous releases, and should probably upgrade.
Download (3.5MB)
Added: 2006-03-13 License: Free To Use But Restricted Price:
1321 downloads
Myintcl 0.1
Myintcl is an interface for using MySQL in Tcl programs, and it is written only in pure Tcl. more>>
Myintcl is an interface for using MySQL in Tcl programs, and it is written only in pure Tcl. The API design of Myintcl library follows that of fbsql.
<<less Download (MB)
Added: 2006-11-28 License: BSD License Price:
1060 downloads
Secleted [ 0 ] software to compare
Copyright Notice:
Software piracy is theft, Using crack, password, serial numbers, registration codes, key generators is illegal and prevent future software development. The above tcl regexp search only lists software in full, demo and trial versions for free download. Download links are directly from our mirror sites or publisher sites, torrent files or links from rapidshare.com, yousendit.com or megaupload.com are not allowed