|
|
楼主

楼主 |
发表于 2009-12-20 14:57:32
|
只看该作者
请教正则表达式
data old;
input name $60.;
datalines;
Judith S Reaveley
Ralph F. Morgan
Jess Ennis
Carol Echols
Kelly Hansen Huff
Judith
Nick
Jones
;
data new;
length first middle last $ 40;
re1 = prxparse('/(\S+)\s+([^\s]+\s+)?(\S+)/o');
re2 = prxparse('/(\S+)\(s+)([^\s]+\s+)(?)(\S+)/o');
set old;
id=prxmatch(re1, name);
if id then
do;
first = prxposn(re1, 1, name);
middle = prxposn(re1, 2, name);
last = prxposn(re1, 3, name);
end;
test = prxposn(re2, 4, name);
run;
我有4个问题:
1.为什么re2定义是错误的?
2.在re1定义中,为什么有的加括号,如\S+,有的又不加,如\s+?加括号和不加括号有什么不一样呢?
3.斜杠最后的那个o是什么意思?查help没有查到。
4.prxposn函数第二个参数叫capture-buffer,翻译成中文是什么意思呢?
多谢大侠赐教! |
|