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>