home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 10 Tools
/
10-Tools.zip
/
pcre34.zip
/
PCRE34L.ZIP
/
rexxpcre.txt
< prev
Wrap
Text File
|
2000-11-22
|
5KB
|
172 lines
1.REXXPCRE.DLL
1.1. PCREAuthor
ß¿¡Γá¬ß: auth = PCREAuthor()
髺óαáΘáÑΓ ßΓ᫬π, ß«ñÑαªáΘπε ¿¼∩ áóΓ«αá PCRE ¿ Ñú« email.
1.2. PCREVersion
ß¿¡Γá¬ß: ver = PCREVersion()
髺óαáΘáÑΓ ßΓ᫬π, ß«ñÑαªáΘπε óÑαß¿ε í¿í½¿«ΓѬ¿.
1.3. PCREInit
ß¿¡Γá¬ß: rc = PCREInit([locale])
»áαá¼ÑΓα: locale -- ΓαÑíπѼá∩ ½«¬á½∞ (߬áªÑ¼ "En_US")
ó«ºóαáΘáÑΓ: ºáñÑ⌐ßΓó«óá¡¡πε ½«¬á½∞ (»« óßѼ ¬áΓÑú«α¿∩¼)
ê¡¿µ¿á½¿º¿απÑΓ í¿í½¿«ΓѬπ ºáñá¡¡«⌐ ½«¬á½∞ε.
àß½¿ »áαá¼ÑΓα »πßΓá∩ ßΓ᫬á, Γ« ¿¡¿µ¿á½¿º¿απÑΓß∩ ΓѬπΘÑ⌐
½«¬á½∞ε (ß¼. SET LANG ó config.sys).
àß½¿ »áαá¼ÑΓα »α«»πΘÑ¡ -- ¿ß»«½∞ºπÑΓß∩ "C" ½«¬á½∞.
Å«-π¼«½τá¡¿ε, í¿í½¿«ΓѬá αáí«ΓáÑΓ ß "C" ½«¬á½∞ε.
1.4. PCRECompile
ß¿¡Γá¬ß: rc = PCRECompile( 'pcre', mask )
»áαá¼ÑΓαδ: 'pcre' -- ¿¼∩ »ÑαѼѡ¡«⌐, ¬πñá íπñÑΓ »«¼ÑΘ±¡ σφ¡ñ½
߬«¼»¿½¿α«óá¡¡«ú« αÑúπ½∩α¡«ú« óδαáªÑ¡¿∩
mask -- ßΓ᫬á ß αÑúπ½∩α¡δ¼ óδαáªÑ¡¿Ñ¼
ó«ºóαáΘáÑΓ: ¬«ñ «Φ¿í¬¿
0 - ok
1 - ¡Ñ¬«ααÑ¬Γ¡δÑ (¡Ñ¿ºóÑßΓ¡δÑ) «»µ¿
2 - ¡Ñ¬«ααÑ¬Γ¡á∩ ¼á߬á
3 - ¡Ñ¬«ααÑ¬Γ¡«Ñ ¿¼∩ »ÑαѼѡ¡«⌐ ñ½∩ pcre
4 - «Φ¿í¬á ¬«¼»¿½∩µ¿¿, ΓѬßΓ«óá∩ ßΓα«¬á »«¼ÑΘáÑΓß∩ ó 'pcre'
諼»¿½¿απÑΓ αÑúπ½∩α¡«Ñ óδαáªÑ¡¿Ñ ñ½∩ ñá½∞¡Ñ⌐ΦÑú« ¿ß»«½∞º«óá¡¿∩.
mask ¿¼ÑÑΓ ó¿ñ : /regexp/[8|i|m|s|x|g|A|U|E]
8 -- UTF8
i -- αÑú¿ßΓα ¡Ñ πτ¿ΓδóáÑΓß∩
m -- multiline
s -- dot all
x -- extended
g -- not empty
A -- ancored
U -- ungreedy
E -- dollar only
ºá ñÑΓá½∩¼¿ «íαáΘáΓ∞ß∩ ¬ απ¬«ó«ñßΓóπ »« ∩ºδ¬π Perl ¿ ñ«¬π¼Ñ¡Γᵿ¿ »« PCRE.
Åα¿¼Ñα:
if PCRECompile('rec', '/(\d{2}/\d{2}/\d{2,3}) (\d{2}:\d{2}:\d{2}) (\[\d+,\d+\]) . (.*)/') then
say Error !
else
say Success
1.5. PCREExec
ß¿¡Γá¬ß: rc = PCREExec('pos_stem.',pcre,string,[pos,[,opts])
»áαá¼ÑΓαδ: 'pos_stem.' -- ¿¼∩ ßΓѼá, ó ¬«Γ«¼ íπñπΓ σαá¡¿Γß∩ ß¼ÑΘÑ¡¿∩.
pos_stem.0 -- τ¿ß½« «Γßτ±Γ«ó.
pcre -- ߬«¼»¿½¿α«óá¡¡«Ñ αÑúπ½∩α¡«Ñ óδαáªÑ¡¿Ñ
string -- ßΓ᫬á
pos -- ¡áτá½∞¡á∩ »«º¿µ¿∩ (»«-π¼«½τá¡¿ε -- 1)
¡π¼Ñαᵿ∩ ß¿¼ó«½«ó ¬á¬ ó REXX'Ñ á ¡Ñ ó æ.
opts -- «»µ¿¿ (»«-π¼«½τá¡¿ε -- ¡Ñ ¿ß»«½∞ºπεΓß∩)
A - Anchored
b - Not begin of line
e - Not end of line
g - Not empty
ó«ºóαáΘáÑΓ: ¬«ñ «Φ¿í¬¿
-1 - ¡Ñ ¡á⌐ñÑ¡«
0 - Ok
1 - ¡Ñ¬«ααÑ¬Γ¡δÑ (¡Ñ¿ºóÑßΓ¡δÑ) «»µ¿
3 - ¡Ñ¬«ααÑ¬Γ¡«Ñ ¿¼∩ »ÑαѼѡ¡«⌐ ñ½∩ pcre
5 - pcre ¡Ñ ß«ñÑαª¿Γ ß¬«¼»¿½¿α«óá¡¡«ú« óδαáªÑ¡¿∩
6 - ¡Ñ¬«ααÑ¬Γ¡á∩ »«º¿µ¿∩
1.6. InitPCRE
ß¿¡Γá¬ß: call PCRELoad
¿¡¿µ¿á½¿º¿απÑΓ í¿½¿«ΓѬπ, αÑú¿ßΓα¿απ∩ ¡Ñ«íσ«ñ¿¼δÑ Σπ¡¬µ¿¿
Åα¿¼Ñα:
call RxFuncAdd 'PCRELoad', 'REXXPCRE', 'PCRELoad'
call PCRELoad
1.7. DropPCRE
ß¿¡Γá¬ß: call DropPCRE
ñÑαÑú¿ßΓα¿απÑΓ Σπ¡¬µ¿¿
2. REXXPCRE.rex[x]
äóá ¬½áßßá :
RxPCRE
|
+----RxStrParser
é««íΘÑ ∩ó½∩ÑΓß∩ (¡á ¼«⌐ óºú½∩ñ) πñ«í¡«⌐ «í±αΓ¬«⌐ ¡áñ Σπ¡¬á¼¿ PCREXXXX.
RxStrParser ó ¬á¬«⌐-Γ« ¼ÑαÑ á¡á½«ú ß»½¿Γ«ó¬¿ PERL'a.
2.1 îÑΓ«ñδ RxPCRE
2.1.1 init([locale]) -- ß¼. PCREInit, ºá ¿ß¬½ετÑ¡¿Ñ¼: Ñß½¿ »áαá¼ÑΓαá ¡ÑΓ,
Γ« ¿ß»«½∞ºπÑΓß∩ ΓѬπΘá∩ ½«¬á½∞
»α¿¼Ñα:
re = .RxPCRE~new
2.1.2 getLocale -- ó«ºóαáΘáÑΓ ½«¬á½∞, »α¿¼Ñ¡±¡¡πε ñ½∩ PCRE
»α¿¼Ñα:
say re~getLocale
2.1.3. getMask -- ó«ºóαáΘáÑΓ ¿ß»«½∞ºπѼπε ¼á߬π
»α¿¼Ñα:
say re~getMask
2.1.4. setMask(mask) -- ¬«¼»¿½¿απÑΓ ¼á߬π, ó«ºóαáΘá∩ ¬«ñ «Φ¿í¬¿; ß¼. PCRECompile
2.1.5. find(ofs_stem., str, [start_pos [,opts]]) --
»«¿ß¬ Σαáú¼Ñ¡Γ«ó, ó«ºóαáΘáÑΓ ¬«ñ «Φ¿í¬¿; ß¼. PCREExec
2.1.6. findSubs(str, [start_pos [,opts]]) --
»«¿ß¬ Σαáú¼Ñ¡Γ«ó, ó«ºóαáΘáÑΓ ¼áßß¿ó (.array) ßΓ᫬ Ñß½¿ ß«ó»áñÑ¡¿∩
í뫨. Ñß½¿ ¡¿τÑú« ¡Ñ ¡á⌐ñÑ¡« ¿½¿ í뫨 «Φ¿í¬¿, Γ« ó«ºóαáΘáÑΓß∩ .nil;
ß¼ RxPCRE::find, PCREExec.
»α¿¼Ñα:
a = re~findSubs("z = zz!")
if a <> .nil then do /* do smth with data */ end;
else if re~lastError = -1 then say 'Not found!';
else say 'error: 're~lastError;
2.1.7. lastError -- ó«ºóαáΘáÑΓ ¬«ñ ºáóÑαΦÑ¡¿∩ »«ß½Ññ¡Ñ⌐ «»Ñαᵿ¿
2.1.8. getVersion -- ó«ºóαáΘáÑΓ óÑαß¿ε libpcre ó ó¿ñÑ ßΓ᫬¿
2.1.9. getRxVersion -- ó«ºóαáΘáÑΓ óÑαß¿ε REXXPCRE ó ó¿ñÑ ßΓ᫬¿
2.1.10. getAuthor -- ó«ºóαáΘáÑΓ ßΓப㠨 ¿¼Ñ¡Ñ¼ áóΓ«αá PCRE
2.1.11. getPortAuthor -- ó«ºóαáΘáÑΓ ßΓ᫬π ß ¿¼Ñ¡Ñ¼ áóΓ«αá REXXPCRE
2.2. îÑΓ«ñδ RxStrParser
è½áßß RxStrParser ¡áß½ÑñπÑΓ «Γ RxPCRE.
æñÑ½á¡ ß µÑ½∞ε »«½πτ¿Γ∞ πñ«í¡δ⌐ αáºí«αΘ¿¬ ßΓ᫬ ó «Γ½¿τ¿¿ «Γ PERL'a
»ÑαѼ¡¡δÑ ¿¡ñѬ߿απεΓß∩. Æ.Ñ. ($a,$b,$c) = / /
íπñÑΓ ß««Γó. sp~parse(str); sp[1], sp[2], sp[3].
2.2.1 init -- ¿¡¿µ¿á½¿º¿απÑΓ ¬½áßß. ß¼. RxPCRE::init
2.2.2 parse -- ß«íßΓóÑ¡¡« αáºí«αΘ¿¬ ßΓ᫬¿, ó«ºóαáΘáÑΓ 1 Ñß½¿ ¡Ñ í佫
«Φ¿í«¬ ¿ 0 ó «íαáΓ¡«¼ ß½πτáÑ.
æ¼. RxPCRE::lastError, RxPCRE::find
rc = sp~parse(str)
rc = sp~parse(str,10); /* ß »«º¿µ¿¿ 10 */
2.2.3. '[]' ó«ºóαáΘáÑΓ »«ñßΓ᫬π. Ñß½¿ «¡á »πßΓá∩, Γ« αѬ«¼Ñ¡ñπÑΓß∩
»«ß¼«ΓαÑΓ∞ lastError
2.3 Åα¿¼Ñα
a = .RxStrParser~new /* ¿¡¿µ¿á½¿ºáµ¿∩ ΓѬπΘÑ⌐ ½«¬á½∞ε, ß¼ $LANG */
mask = "/\s*([_a-zA-Z][a-zA-Z0-9._]*)\s*=\s*([^#]*)(#|$)(.*)/"
if a~setMask(mask) <> 0 then do
say 'Oops! Error: ' a~lastError
exit -1
end;
say a~parse("a2 = 3"); /* αáºí«α¬á ßΓ᫬¿ */
say a[1] /* 'a2'*/
say a[2] /*3*/
exit 0