设为首页收藏本站|繁體中文 快速切换版块

 找回密码
 立即加入
搜索
查看: 1570|回复: 0

matlab中运用正则表达式处理txt文档的问题

[复制链接]

该用户从未签到

尚未签到

发表于 2010-2-17 10:49:29 | 显示全部楼层 |阅读模式

马上加入,结交更多好友,共享更多资料,让你轻松玩转电力研学社区!

您需要 登录 才可以下载或查看,没有账号?立即加入

×
本帖最后由 nxhylyh 于 2010-2-17 11:04 编辑 . x: g. z) M# Z0 g7 p
# [! t) m: s! J7 W
先说点废话~老师在寒假给小弟一个课题,就是在MATLAB中运用正则表达式来处理txt文档,小弟matlab新手~正则表达式中文资料太少了~英文又太差劲,所以对英文资料只好自动过滤了~摸索了半个多月,删删改改,论坛也去了好多个·~~自~希望大家看看~先介绍下附件1的格式:5 a+ H0 ]9 u3 @
>AB016625
. H. c* @2 G7 jGCGGCCCAGGCCCGGAACCTTCCCTGGTCGTGCG
& {3 e( N/ T" ?0 E>AF0082168 C9 D* t' w" U5 r6 m$ l
AAGCTTTCCT

: p9 C, m& U% Q( K6 ~题目1:将'>'符号后跟的的字符串(母字符串)提取出来并建立以字符串命名的文件夹(如文件夹ABO16625,文件夹AF008216)7 ~2 \3 ~7 A0 c5 E
题目2:在相应的文件下建立base.txt
4 n& \$ F0 T0 t题目3:将母字符串下面的字符串(子字符串)提取出来储存在相应的base.txt里面
. g# Q; Q6 k( q* `0 ^这3个题目,小弟摸爬滚打算是做出来了,共享如下:

  1. , i& w! r1 `; n+ ~, A
  2. clc;clear;6 D) \1 Z/ ]! ?" C( V! l0 N" I
  3. file=fopen('fasta.txt','r');
    ! `8 x3 F8 l. Q  {) ~8 S# `
  4. fname={};fname1={};' M2 Q! f* S+ v9 u' s- C
  5. fbase={};
    ' ]/ N2 f4 Y1 T
  6. while feof(file)==0- y7 s, O# I6 w; c$ g% L: y4 ~
  7.       str=fgetl(file);- Q* Z+ c+ Y& G" T. o/ U
  8.       fname1=regexpi(str,'(?<=>)[A-Z0-9]+$','match');
    . t1 B$ _% c3 w! Y6 X7 z+ O6 p
  9.       fbase=regexpi(str,'^[a-z]+$','match');
    5 s: ]9 S3 \/ z1 _( _6 Y
  10.       if ~isempty(fname1)* v- q, n' s2 x5 _  [8 P  ?
  11.         mkdir(fname1{1});
    ; Z& o  T) J, j- b
  12.         k1=strcat('D:\mat\work\',fname1{1},'\base.txt');
    2 |3 b$ a3 q/ L* V! O+ l
  13.         fname=[fname; fname1];
    * P9 H1 p6 k: Q% `3 _" z
  14.         fname1={};: X! K0 d. w4 ]
  15.       end( f# d) J. ^1 w, z, _' ^
  16.        if ~isempty(fbase)
    : i) X$ @/ j2 O: L; B5 I
  17.         fid1=fopen(k1,'a');5 ]0 D0 @5 I% m9 ?; @% ~# h
  18.         fwrite(fid1,fbase{1});: X4 L+ k9 A" x1 K' E
  19.         fclose(fid1);
    8 W  z6 `; x  N, X8 g7 e
  20.         fbase1={};
    9 H; F# o( }% q$ d5 X- y
  21.        end* x+ F& i" _, b
  22. end
    , v) M' s  \# Q' W: L7 [
  23. fclose('all');
    3 F* j1 Z, n8 \9 `+ U5 B3 p2 x# V
复制代码
但是接下来的题目小弟实在困惑不已,望各位指教& x* v8 D6 u4 N5 c, S' m- `( W( R
先介绍hmrcds格式:
+ p- c, G# S- O: T+ ^% o; o, G

4 l' ]9 A+ Z4 w; D' ?AB016625 12 24 35 67; V6 p# g; P% w9 O) Z6 h
AF008216 12 15. ?. h4 V- g! H% x8 \
U25134 11 15

, n9 s( K" k' K4 a, H6 g5 E( R题目4:在相应母字符串命名的文件夹下建立cds.txt文档$ Q% q4 F" x1 u5 G4 Z9 ~
题目5:将hmrcds中母字符串后的纯数字字符串提取出来存在各自的cds.txt中$ V! I. ~" P; X1 {4 V
题目6:在相应的文件夹中,由cds.txt中储存的偶数个数字为根据,提取出base.txt中的字符串,并储存在由此在相应文件夹下建立的ex1.txt,ex2.txt……中~,例如在AB016625命名的文件夹下,在base.txt中取出12-24的字符串存在ex1.txt,取出35-67的字符串存在ex2.txt中~
; T+ E; Y6 a1 F$ k& O是不是看的头大~~~7 v, |* b. r. x5 s& d

; v/ D8 i" n% }" `4 A题目4小弟可以做出来,题目5,小弟用正则表达式实在做不出来,题目6还没做到
8 L& `1 y* ?2 K1 |8 f/ w! S另外,小弟今天知道用
! h7 L4 H5 l4 `$ \5 f3 s$ Xf = fopen('fasta.txt','rt'); % t 属性根据需要可省略9 V5 B$ B( i9 R: S/ `, @
x = fread(f,'*char');2 F' h% T' v% X  \; V, B
fclose(f);( W2 }) ]& c$ ~+ M0 s; P
x=x'
5 ?4 N% }' u( B0 c2 s可以将文档以字符串形式读入(textread读取后是一个cell格式),于是就用
2 R# L, Q0 B( ^& H  Qfname1=regexpi(x,'(?<=>)\w+','match'); w2 Y  B7 n+ Q6 v
来完成题目题目1中的提取母字符串,结果在matlab运行后,不出现结果,同时cpu使用达到50%,不知道怎么回事~大家指点小弟下吧~~~
$ r/ X) R/ [6 v% }1 m1 t崩溃。。附件上传了但是黏贴不了。不知道怎么回事有需要的加我Q Q : 1036300382
"真诚赞赏,手留余香"
还没有人打赏,支持一下
楼主热帖
帖文化:【文明发帖 和谐互动】 社区精神:【创新、交流、互助、共享】
您需要登录后才可以回帖 登录 | 立即加入

本版积分规则

招聘斑竹

小黑屋|手机版|APP下载(beta)|Archiver|电力研学网 ( 赣ICP备12000811号-1|赣公网安备36040302000210号 )|网站地图

GMT+8, 2026-10-24 16:26

Powered by Discuz! X3.5 Licensed

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表