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

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

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

[复制链接]

该用户从未签到

尚未签到

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

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

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

×
本帖最后由 nxhylyh 于 2010-2-17 11:04 编辑 1 s' I6 Z" z- {* w% O( B1 d! i
' J/ M3 w: L  j
先说点废话~老师在寒假给小弟一个课题,就是在MATLAB中运用正则表达式来处理txt文档,小弟matlab新手~正则表达式中文资料太少了~英文又太差劲,所以对英文资料只好自动过滤了~摸索了半个多月,删删改改,论坛也去了好多个·~~自~希望大家看看~先介绍下附件1的格式:9 H# I5 ?7 s9 d; m  `" }
>AB016625
# w" |/ i, U  D  {$ A( ~7 D. |GCGGCCCAGGCCCGGAACCTTCCCTGGTCGTGCG* T6 g8 D2 ?2 `
>AF008216- K5 n5 k) T5 U0 D
AAGCTTTCCT
  \3 P+ p6 ?3 \7 i6 b' e, }* @$ K) p
题目1:将'>'符号后跟的的字符串(母字符串)提取出来并建立以字符串命名的文件夹(如文件夹ABO16625,文件夹AF008216)( H9 u4 F& v* A$ |* E3 M  A
题目2:在相应的文件下建立base.txt
: i$ R3 U4 ?2 x7 j/ V) ]题目3:将母字符串下面的字符串(子字符串)提取出来储存在相应的base.txt里面
3 j  T* ?! i! a5 F! H* w这3个题目,小弟摸爬滚打算是做出来了,共享如下:
  1. 4 _8 \$ `* T3 {# n
  2. clc;clear;4 x# E% _+ L: M3 {5 ]! l+ t
  3. file=fopen('fasta.txt','r');
    : O; E6 x- L6 C8 {" u
  4. fname={};fname1={};( `' c/ z5 T( C
  5. fbase={};" d, q! n3 J! r: b" |, q1 s
  6. while feof(file)==00 A9 N& o$ B$ q& P+ ]
  7.       str=fgetl(file);: A' ?" H+ ?5 D
  8.       fname1=regexpi(str,'(?<=>)[A-Z0-9]+$','match');
    2 C: t. E& p  h8 ~9 J) d
  9.       fbase=regexpi(str,'^[a-z]+$','match');
    6 l  |) X, g& T6 Q! }
  10.       if ~isempty(fname1)
    . j6 a! ~* ]$ y7 x" d$ b3 M
  11.         mkdir(fname1{1});1 k; b7 r( \( ~) U( d4 `6 I
  12.         k1=strcat('D:\mat\work\',fname1{1},'\base.txt');$ Z+ l, c' f$ U  X' C
  13.         fname=[fname; fname1];
    5 B/ |1 |# n5 @' g  ^. ~5 c
  14.         fname1={};" K. q* Q0 f/ d- C1 B  e
  15.       end
    * d+ c3 {! Q$ s, x7 n2 l
  16.        if ~isempty(fbase)
    & Z( ~- i+ O, f, X7 z+ k0 ?0 e; W0 u
  17.         fid1=fopen(k1,'a');
    , o5 l* k! x8 @5 ^+ Z4 I
  18.         fwrite(fid1,fbase{1});
    % L# ^4 n# f* x7 V; m: x
  19.         fclose(fid1); ; ]$ @) G$ N  J0 N) r: g, n# ?
  20.         fbase1={};) C  k" v; D' b* o' s- Z# }' h6 o
  21.        end: r/ x% Y8 i' u7 j7 Y7 `1 m
  22. end
    1 v; H  r2 h. U# y: |
  23. fclose('all');
    : K6 |; ~  |2 o8 l) \, S
复制代码
但是接下来的题目小弟实在困惑不已,望各位指教( A1 L, ^- j- o3 A0 ~0 D- K& J( o
先介绍hmrcds格式:' R; U5 U* r2 l9 E

- e* K4 \9 u! }% bAB016625 12 24 35 67! k* F# S, I! ^4 a; O$ m
AF008216 12 156 A6 S2 Z2 p' ]3 h' j  I) b( }) ~$ J
U25134 11 15
% B  C; r% S3 N% P3 k
题目4:在相应母字符串命名的文件夹下建立cds.txt文档
: t) ^' _8 B7 {: u- b  |+ H7 {题目5:将hmrcds中母字符串后的纯数字字符串提取出来存在各自的cds.txt中
( S8 A& g: U- I题目6:在相应的文件夹中,由cds.txt中储存的偶数个数字为根据,提取出base.txt中的字符串,并储存在由此在相应文件夹下建立的ex1.txt,ex2.txt……中~,例如在AB016625命名的文件夹下,在base.txt中取出12-24的字符串存在ex1.txt,取出35-67的字符串存在ex2.txt中~6 A  i! m" O  z2 `9 T, O
是不是看的头大~~~& B- @  w8 ?$ t7 n' ]+ i  |  e

3 [6 J! ?' C$ `: `# u1 X0 f题目4小弟可以做出来,题目5,小弟用正则表达式实在做不出来,题目6还没做到6 j1 p1 z) W' i* Y+ F0 j4 D( _
另外,小弟今天知道用
% c, T9 ~% C2 {2 ~7 y  ]: df = fopen('fasta.txt','rt'); % t 属性根据需要可省略0 Y$ j4 Q: z% e) l
x = fread(f,'*char');
- m0 M1 i. ^7 Q* K/ d! z3 m9 gfclose(f);
4 \+ t5 K; g% {" _( Q8 gx=x'
( G1 S1 H' Y  U( ~可以将文档以字符串形式读入(textread读取后是一个cell格式),于是就用. G% b% Q8 O; r3 p- x
fname1=regexpi(x,'(?<=>)\w+','match')3 |+ {7 F+ _( ^3 r! k5 d
来完成题目题目1中的提取母字符串,结果在matlab运行后,不出现结果,同时cpu使用达到50%,不知道怎么回事~大家指点小弟下吧~~~! B0 l: y+ V" B; Y
崩溃。。附件上传了但是黏贴不了。不知道怎么回事有需要的加我Q Q : 1036300382
"真诚赞赏,手留余香"
还没有人打赏,支持一下
楼主热帖
帖文化:【文明发帖 和谐互动】 社区精神:【创新、交流、互助、共享】
您需要登录后才可以回帖 登录 | 立即加入

本版积分规则

招聘斑竹

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

GMT+8, 2026-10-24 19:53

Powered by Discuz! X3.5 Licensed

© 2001-2026 Discuz! Team.

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