一个正则表达式的写法(100分)

P

pwchina

Unregistered / Unconfirmed
GUEST, unregistred user!
a1b2c3a1.5b3c8a8..........
没有因定长度,需要取出数据
a
1
b
2
c
3
a
1.5...........
 
楼主是不是正则狂啊?这么简单的东西也要用正则表示式吗?
in a [0..9] then
...不就成了?用正则还不比这要慢几个数量级?
 
不确定这个表达式有多长
如果有26个呢?
还能用 IN 吗?且如何判定边界,不用正则表达式能行吗?
要取出所有字母后面的数值
 
function MyExtractStr(const Str:String):TStrings;
const
NumChar:set of Char=['0'..'9','.'];
var
i:Integer;
LastChar:Char;
LastIsAlpha,IsAlpha:Boolean;
mstr:String;
begin
Result:=TStringList.Create;
if Str='' then
exit;
mstr:='';
LastChar:=Str[1];
LastIsAlpha:=not (LastChar in NumChar);
for i:=1 to Length(Str)do
begin
IsAlpha:=not (Str in NumChar);
if LastIsAlpha xor IsAlpha then
begin
Result.Add(mstr);
mstr:=Str;
LastIsAlpha:=IsAlpha;
end
else
mstr:=mstr+Str;
end;
if mstr<>'' then
Result.Add(mstr);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
with MyExtractStr('a1b2c3a1.5b3c8a8')do
begin
ShowMessage(Text);
Free;
end;
end;
 
没试过上面的行不行,但用正则表达式已经解决
([A-Z]/d+[/./d+]*)
你的方法在固定这个格式可以解决,但真实格式为用户遵循这个规则字母+数字这个规则随机输入,所以我想还是不行
 
顶部