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

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

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

[复制链接]

该用户从未签到

尚未签到

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

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

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

×
本帖最后由 nxhylyh 于 2010-2-17 11:04 编辑
: s5 N1 K" c& h" y7 u' f
5 B: Y9 {: \1 C7 u2 S; ]1 q先说点废话~老师在寒假给小弟一个课题,就是在MATLAB中运用正则表达式来处理txt文档,小弟matlab新手~正则表达式中文资料太少了~英文又太差劲,所以对英文资料只好自动过滤了~摸索了半个多月,删删改改,论坛也去了好多个·~~自~希望大家看看~先介绍下附件1的格式:
* k+ l# T. Z* r. G' i  b8 P4 q
>AB016625$ O# k! J8 {: ~. Z9 {4 M( ~
GCGGCCCAGGCCCGGAACCTTCCCTGGTCGTGCG
0 R7 I$ t- H" E/ k" |0 b9 M>AF008216
+ a' b& O% h% r% J7 w% eAAGCTTTCCT

; j' p: k# d! l题目1:将'>'符号后跟的的字符串(母字符串)提取出来并建立以字符串命名的文件夹(如文件夹ABO16625,文件夹AF008216)
$ t3 x+ u5 O; Z1 t/ m题目2:在相应的文件下建立base.txt, T2 l4 B% _6 N1 A% h9 B" e9 ]3 j
题目3:将母字符串下面的字符串(子字符串)提取出来储存在相应的base.txt里面& e; E+ C6 y, j+ c6 L: c0 y
这3个题目,小弟摸爬滚打算是做出来了,共享如下:

  1. - x3 M0 _: l( A2 }0 v- ], p
  2. clc;clear;, k* E( Z# ^: w
  3. file=fopen('fasta.txt','r');
      d% {( g, q! e) L! Y# `
  4. fname={};fname1={};
    ) W6 z/ T; s2 V/ Q
  5. fbase={};
    7 M' y( u3 N& P% y4 U, P
  6. while feof(file)==0
    ' o1 y  p. D' ~" }) B, X# F7 T" e
  7.       str=fgetl(file);5 n# T# C/ y7 A6 J
  8.       fname1=regexpi(str,'(?<=>)[A-Z0-9]+$','match');/ ?5 l8 N4 ?* k
  9.       fbase=regexpi(str,'^[a-z]+$','match');
    0 V( r# z- o# y
  10.       if ~isempty(fname1)
    9 ]4 Y3 ?; h2 b& [9 D3 C- |( Z* U
  11.         mkdir(fname1{1});; q3 O2 g* x# L/ L4 w
  12.         k1=strcat('D:\mat\work\',fname1{1},'\base.txt');9 k" h' j1 q5 x  `9 ~* `
  13.         fname=[fname; fname1];0 b/ u6 I- L  B) @- j4 d
  14.         fname1={};
    & g4 A9 Y- D* X0 M4 ?
  15.       end
    * ]* d" q" \% E2 [- Q: O8 u
  16.        if ~isempty(fbase)
    : i# w2 Q8 N4 o
  17.         fid1=fopen(k1,'a');) u+ D% ]4 f3 e0 d. |- @1 r) \& C
  18.         fwrite(fid1,fbase{1});
    + o. x& B# c7 S- P/ U- i: a
  19.         fclose(fid1);
    9 s5 t5 U4 f2 ]2 v" O" ]. X$ n( A
  20.         fbase1={};( z+ S! L5 S2 a" t/ _
  21.        end
    " j  L5 s2 D  {( r
  22. end3 [1 \0 N2 Y7 p0 g8 z/ S
  23. fclose('all');' C8 a% J: y- t3 a  O
复制代码
但是接下来的题目小弟实在困惑不已,望各位指教
! A3 J  F3 O9 y( e先介绍hmrcds格式:- @( t, m" L) Z5 E6 |5 m

2 X, n8 r& y1 c. s6 BAB016625 12 24 35 67/ ~3 @+ s' o& s- M* \* x1 l
AF008216 12 15
5 d; t  o* R( B- g' m! eU25134 11 15
) H3 k# D  [( l: T& @
题目4:在相应母字符串命名的文件夹下建立cds.txt文档: V# m0 [5 }1 s8 v
题目5:将hmrcds中母字符串后的纯数字字符串提取出来存在各自的cds.txt中
3 W7 |& n6 e5 I4 I题目6:在相应的文件夹中,由cds.txt中储存的偶数个数字为根据,提取出base.txt中的字符串,并储存在由此在相应文件夹下建立的ex1.txt,ex2.txt……中~,例如在AB016625命名的文件夹下,在base.txt中取出12-24的字符串存在ex1.txt,取出35-67的字符串存在ex2.txt中~0 O' S5 M  x; P# t
是不是看的头大~~~/ `! r4 D) K0 Q' t; p" P

# L4 S1 \2 ?& |$ M' d2 N: \. V% `题目4小弟可以做出来,题目5,小弟用正则表达式实在做不出来,题目6还没做到) ?, r$ ?" K4 W* `3 F% W% j: @
另外,小弟今天知道用$ |; K3 |# Q; f+ J% b2 P- }
f = fopen('fasta.txt','rt'); % t 属性根据需要可省略
5 Q. t. n# D* _! X4 h& X9 Xx = fread(f,'*char');+ B3 i3 u" x! V/ r. s- U5 p1 `
fclose(f);! M' ?0 r. f5 |. q" Z$ B
x=x'( L' P5 |: b( f# w( c
可以将文档以字符串形式读入(textread读取后是一个cell格式),于是就用* T( E$ T1 e' f0 q1 c
fname1=regexpi(x,'(?<=>)\w+','match')' d" Q% L; [+ U" t, D" C( k
来完成题目题目1中的提取母字符串,结果在matlab运行后,不出现结果,同时cpu使用达到50%,不知道怎么回事~大家指点小弟下吧~~~& U: q& E/ H; ^
崩溃。。附件上传了但是黏贴不了。不知道怎么回事有需要的加我Q Q : 1036300382
"真诚赞赏,手留余香"
还没有人打赏,支持一下
楼主热帖
帖文化:【文明发帖 和谐互动】 社区精神:【创新、交流、互助、共享】
您需要登录后才可以回帖 登录 | 立即加入

本版积分规则

招聘斑竹

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

GMT+8, 2026-3-19 05:03

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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