Keep It Simple, Stupid PerlMonks

### Re^4: check for square-number with a regex

by spx2 (Deacon)
 on Oct 24, 2009 at 09:56 UTC ( #803019=note: print w/replies, xml ) Need Help??

in reply to Re^3: check for square-number with a regex
in thread check for square-number with a regex

I think you're aware of this solution for anbncn but I'll post it anyway(it uses ??{} blocks and ?{} and is a Perl regex).
```\$r = qr/^(a+b)(?{ \$a = -1+length \$^N; })(??{ \$b=\$a-1;"(b{\$b})" })(??{
+"(c{\$a})" })/x;

sub test {
print
\$_[0] =~ \$r
? "matched\n"
: "not matched\n";
}

test "aaabbbccc";
test "aaaabbbccc";
test "aaaabbbbccc";
test "aaaabbbbcccc";
test "aabbbbcccc";
test "abc";
test "aabbcc";
Result on Perl v5.8.8:
```matched
not matched
not matched
matched
not matched
matched
matched

Replies are listed 'Best First'.
Re^5: check for square-number with a regex
by JavaFan (Canon) on Oct 24, 2009 at 11:54 UTC
I (and others in this thread) explicitely mentioned no using (?{}) and (??{}). Allowing those means you have the full power of Perl available. It would mean that anything you can do in Perl, you can to with a "regular expression", and the question "can I do foo with a regular expression" becomes a non-question.

And I would have used (?{}) differently anyway. Something like:

```/^(a+)(b+)(c+)\$(?(?{length(\$1) == length(\$2) && length(\$2) == length(\$
+3)})|(*FAIL))/;
But that's just a fancy way of writing:
```/^(a+)(b+)(c+)\$/ && length(\$1) == length(\$2) && length(\$2) == length(\$
+3);
And you can solve the "match a square" with:
```/^([0-9]+)\$(?(?{sqrt(\$1) == int sqrt(\$1)})|(*FAIL))/;
Or in general, match "whatever" by:
```/^(.*)\$(?(?{is_whatever(\$1)})|(*FAIL))/;
after writing the appropriate "is_whatever" function.

But that means the question no longer is "how can I do foo with a regexp", but "how can I do foo in Perl".

Create A New User
Node Status?
node history
Node Type: note [id://803019]
help
Chatterbox?
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others having an uproarious good time at the Monastery: (3)
As of 2018-04-23 00:59 GMT
Sections?
Information?
Find Nodes?
Leftovers?
Voting Booth?
My travels bear the most uncanny semblance to ...

Results (84 votes). Check out past polls.

Notices?