You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oro-user@jakarta.apache.org by ������ ���������� <se...@zolshar.ru> on 2001/12/23 21:53:13 UTC

Re[2]: substitution: what stands for the whole match

Hello Daniel,

Thursday, December 20, 2001, 3:49:46 AM, you wrote:

>>1.How can I obtain "1212 345345" from "12 345" without changing a pattern?
>>2.Why oro doesn't support "$&" expression while it's standard in perl?

DFS> $& is not part of Perl regular expression syntax.  It is a special Perl
DFS> variable that has a special Perl meaning.  The .regex package implements
DFS> Perl regular expression syntax, not special Perl variables like $&, $`,
DFS> etc.  It's a subtle difference similar to the reason why \Q isn't there

As i am an ordinary stuped user, i don't want to know of any subtle matter.
I just plain know that in perl one can use "$&" in a substution,
while i can't, and this frustrates me a lot :-)))

DFS> (it's part of Perl double quoted string processing).  Use capturing
DFS> parentheses and $1 instead:

DFS>   String patt="(\\d+)";
DFS>   String sub="$1$1";
DFS>   String input="12 345";

IMHO, in discussed situation purity weights much less than convenience.
In my case i was to write 4 kb of UUUGLY (mostly backslash issues) code
to get the absence of "$&" worked around. Just because the patterns
wasn't mine.

DFS> daniel

Daniel, is it possible to add a support for "$&" to a Perl5Substitution?
This could be of real value...

And, finally, the real subject.
I've done a part of regex testing framework , namely a suit based
on perl5.003_07/t/op/re_tests(class junit.regex.Perl5TestSuite).
It's a very basic suit, but it runs and gives an excellent result for ORO.
What i have got:
package - jakarta-oro-2.0.4.jar
tests - 274
unexpected errors - 0 !
Failures: 20

ALL failures are of the same type - illegal compilation
of zero-with infinite quantifiers(see details below), IMHO
we can ignore them all.
Congratulations.

These tests doesn't include cases for:
1. multiline input
2. state recovery (such as "(A|B)*\1")
3. substitution
4. something else
Some input on such cases is very appreciated.

And, the last question, where to upload the stuff.

Appendix. Output from junit:
(OroMatcher is a wrapper for the whole library)
java  -cp ...  junit.regex.oro.OroMatcher
.........................................
..................F..F.F................F.F.F.F.
......F.F.........F.........................
.........................................
................................F..F.F......
..........F.F.F.F.......F.F.........F...........
............................

Time: 0,39

There were 20 failures:
1) Shouldn't compile: '()*'null(junit.regex.ShouldNotCompile)junit.framework.AssertionFailedError
        at junit.regex.RegexTest.checkCompile(RegexTest.java:23)
        at junit.regex.ShouldNotCompile.runTest(ShouldNotCompile.java:12)
        at junit.regex.oro.OroMatcher.main(OroMatcher.java:85)
2) Shouldn't compile: '^*'null(junit.regex.ShouldNotCompile)junit.framework.AssertionFailedError
        at junit.regex.RegexTest.checkCompile(RegexTest.java:23)
        at junit.regex.ShouldNotCompile.runTest(ShouldNotCompile.java:12)
        at junit.regex.oro.OroMatcher.main(OroMatcher.java:85)
3) Shouldn't compile: '$*'null(junit.regex.ShouldNotCompile)junit.framework.AssertionFailedError
        at junit.regex.RegexTest.checkCompile(RegexTest.java:23)
        at junit.regex.ShouldNotCompile.runTest(ShouldNotCompile.java:12)
        at junit.regex.oro.OroMatcher.main(OroMatcher.java:85)
4) Shouldn't compile: '(a*)*'null(junit.regex.ShouldNotCompile)junit.framework.AssertionFailedError
        at junit.regex.RegexTest.checkCompile(RegexTest.java:23)
        at junit.regex.ShouldNotCompile.runTest(ShouldNotCompile.java:12)
        at junit.regex.oro.OroMatcher.main(OroMatcher.java:85)
5) Shouldn't compile: '(a*)+'null(junit.regex.ShouldNotCompile)junit.framework.AssertionFailedError
        at junit.regex.RegexTest.checkCompile(RegexTest.java:23)
        at junit.regex.ShouldNotCompile.runTest(ShouldNotCompile.java:12)
        at junit.regex.oro.OroMatcher.main(OroMatcher.java:85)
6) Shouldn't compile: '(a|)*'null(junit.regex.ShouldNotCompile)junit.framework.AssertionFailedError
        at junit.regex.RegexTest.checkCompile(RegexTest.java:23)
        at junit.regex.ShouldNotCompile.runTest(ShouldNotCompile.java:12)
        at junit.regex.oro.OroMatcher.main(OroMatcher.java:85)
7) Shouldn't compile: '(a*|b)*'null(junit.regex.ShouldNotCompile)junit.framework.AssertionFailedError
        at junit.regex.RegexTest.checkCompile(RegexTest.java:23)
        at junit.regex.ShouldNotCompile.runTest(ShouldNotCompile.java:12)
        at junit.regex.oro.OroMatcher.main(OroMatcher.java:85)
8) Shouldn't compile: '(^)*'null(junit.regex.ShouldNotCompile)junit.framework.AssertionFailedError
        at junit.regex.RegexTest.checkCompile(RegexTest.java:23)
        at junit.regex.ShouldNotCompile.runTest(ShouldNotCompile.java:12)
        at junit.regex.oro.OroMatcher.main(OroMatcher.java:85)
9) Shouldn't compile: '(ab|)*'null(junit.regex.ShouldNotCompile)junit.framework.AssertionFailedError
        at junit.regex.RegexTest.checkCompile(RegexTest.java:23)
        at junit.regex.ShouldNotCompile.runTest(ShouldNotCompile.java:12)
        at junit.regex.oro.OroMatcher.main(OroMatcher.java:85)
10) Shouldn't compile: '((a*|b))*'null(junit.regex.ShouldNotCompile)junit.framework.AssertionFailedError
        at junit.regex.RegexTest.checkCompile(RegexTest.java:23)
        at junit.regex.ShouldNotCompile.runTest(ShouldNotCompile.java:12)
        at junit.regex.oro.OroMatcher.main(OroMatcher.java:85)
11) Shouldn't compile: '()*'i(junit.regex.ShouldNotCompile)junit.framework.AssertionFailedError
        at junit.regex.RegexTest.checkCompile(RegexTest.java:23)
        at junit.regex.ShouldNotCompile.runTest(ShouldNotCompile.java:12)
        at junit.regex.oro.OroMatcher.main(OroMatcher.java:85)
12) Shouldn't compile: '^*'i(junit.regex.ShouldNotCompile)junit.framework.AssertionFailedError
        at junit.regex.RegexTest.checkCompile(RegexTest.java:23)
        at junit.regex.ShouldNotCompile.runTest(ShouldNotCompile.java:12)
        at junit.regex.oro.OroMatcher.main(OroMatcher.java:85)
13) Shouldn't compile: '$*'i(junit.regex.ShouldNotCompile)junit.framework.AssertionFailedError
        at junit.regex.RegexTest.checkCompile(RegexTest.java:23)
        at junit.regex.ShouldNotCompile.runTest(ShouldNotCompile.java:12)
        at junit.regex.oro.OroMatcher.main(OroMatcher.java:85)
14) Shouldn't compile: '(a*)*'i(junit.regex.ShouldNotCompile)junit.framework.AssertionFailedError
        at junit.regex.RegexTest.checkCompile(RegexTest.java:23)
        at junit.regex.ShouldNotCompile.runTest(ShouldNotCompile.java:12)
        at junit.regex.oro.OroMatcher.main(OroMatcher.java:85)
15) Shouldn't compile: '(a*)+'i(junit.regex.ShouldNotCompile)junit.framework.AssertionFailedError
        at junit.regex.RegexTest.checkCompile(RegexTest.java:23)
        at junit.regex.ShouldNotCompile.runTest(ShouldNotCompile.java:12)
        at junit.regex.oro.OroMatcher.main(OroMatcher.java:85)
16) Shouldn't compile: '(a|)*'i(junit.regex.ShouldNotCompile)junit.framework.AssertionFailedError
        at junit.regex.RegexTest.checkCompile(RegexTest.java:23)
        at junit.regex.ShouldNotCompile.runTest(ShouldNotCompile.java:12)
        at junit.regex.oro.OroMatcher.main(OroMatcher.java:85)
17) Shouldn't compile: '(a*|b)*'i(junit.regex.ShouldNotCompile)junit.framework.AssertionFailedError
        at junit.regex.RegexTest.checkCompile(RegexTest.java:23)
        at junit.regex.ShouldNotCompile.runTest(ShouldNotCompile.java:12)
        at junit.regex.oro.OroMatcher.main(OroMatcher.java:85)
18) Shouldn't compile: '(^)*'i(junit.regex.ShouldNotCompile)junit.framework.AssertionFailedError
        at junit.regex.RegexTest.checkCompile(RegexTest.java:23)
        at junit.regex.ShouldNotCompile.runTest(ShouldNotCompile.java:12)
        at junit.regex.oro.OroMatcher.main(OroMatcher.java:85)
19) Shouldn't compile: '(ab|)*'i(junit.regex.ShouldNotCompile)junit.framework.AssertionFailedError
        at junit.regex.RegexTest.checkCompile(RegexTest.java:23)
        at junit.regex.ShouldNotCompile.runTest(ShouldNotCompile.java:12)
        at junit.regex.oro.OroMatcher.main(OroMatcher.java:85)
20) Shouldn't compile: '((a*|b))*'i(junit.regex.ShouldNotCompile)junit.framework.AssertionFailedError
        at junit.regex.RegexTest.checkCompile(RegexTest.java:23)
        at junit.regex.ShouldNotCompile.runTest(ShouldNotCompile.java:12)
        at junit.regex.oro.OroMatcher.main(OroMatcher.java:85)

FAILURES!!!

Tests run: 274,  Failures: 20,  Errors: 0

Process Exit...



-- 
Best regards,
 Sergey                            mailto:serge@zolshar.ru


P.S. Merry xmas 2all!



--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>