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

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

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

[复制链接]

该用户从未签到

尚未签到

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

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

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

×
本帖最后由 nxhylyh 于 2010-2-17 11:04 编辑
/ q! \2 N5 e+ M3 ~( D) B% r2 h6 ?
先说点废话~老师在寒假给小弟一个课题,就是在MATLAB中运用正则表达式来处理txt文档,小弟matlab新手~正则表达式中文资料太少了~英文又太差劲,所以对英文资料只好自动过滤了~摸索了半个多月,删删改改,论坛也去了好多个·~~自~希望大家看看~先介绍下附件1的格式:# Z" f: Q. |" }1 [( U: Y
>AB0166254 d* y; b- ^+ b9 d/ r- l
GCGGCCCAGGCCCGGAACCTTCCCTGGTCGTGCG
% d( ~3 x9 @; \4 |$ g) I>AF008216) \/ ~  E/ @3 V1 d
AAGCTTTCCT
- M7 c: h5 V) \% f3 X
题目1:将'>'符号后跟的的字符串(母字符串)提取出来并建立以字符串命名的文件夹(如文件夹ABO16625,文件夹AF008216)
' ^7 J, i0 L- ~$ c9 r题目2:在相应的文件下建立base.txt  v' `- I' @2 P! j9 k$ r2 U
题目3:将母字符串下面的字符串(子字符串)提取出来储存在相应的base.txt里面, J) E  o) z& l) p* r( _
这3个题目,小弟摸爬滚打算是做出来了,共享如下:

  1. 4 q3 a9 X! c' |
  2. clc;clear;
    $ L; l- G& l. r  W2 E6 N" Z* i) Y
  3. file=fopen('fasta.txt','r');
    - Z8 {% ^. G! Y  I& J6 y' Q
  4. fname={};fname1={};
    ! X: p9 U, U. J( g8 S
  5. fbase={};/ {% a+ P4 `1 |( z/ r; V. m& o5 o
  6. while feof(file)==0$ G& d% i! o' E+ y; c
  7.       str=fgetl(file);. z* A/ s7 ^, g
  8.       fname1=regexpi(str,'(?<=>)[A-Z0-9]+$','match');0 \1 @8 v1 e/ c+ C: w! I6 [: c
  9.       fbase=regexpi(str,'^[a-z]+$','match');; }# K, G; s- R- D
  10.       if ~isempty(fname1)
    + O+ w" a! ^; C- c
  11.         mkdir(fname1{1});  {  l: G/ N) S6 g
  12.         k1=strcat('D:\mat\work\',fname1{1},'\base.txt');
    7 p; u9 S( w* w$ K7 I7 J
  13.         fname=[fname; fname1];/ D( o+ Q% Z$ u. ?
  14.         fname1={};
    , G2 e8 k# w0 u' G7 F: c% o
  15.       end( \- {, l. c" E
  16.        if ~isempty(fbase)7 _7 I0 ]6 n" M
  17.         fid1=fopen(k1,'a');! H* ~' H( m2 s- i
  18.         fwrite(fid1,fbase{1});
    : G( U9 P4 U! e' b! D  |" @3 ~
  19.         fclose(fid1); + @+ ~8 k  r5 J% ]
  20.         fbase1={};/ E4 P8 j. p$ c5 R, E, W
  21.        end8 C5 a" H$ W7 E  w6 a
  22. end- }) _6 a3 k9 F7 x
  23. fclose('all');
    7 w7 a: b1 C1 A. g( T/ O
复制代码
但是接下来的题目小弟实在困惑不已,望各位指教" Q, m0 a7 q- O6 a+ n
先介绍hmrcds格式:2 A3 S  R8 n6 K7 L/ P
7 P( ^# {" n; k8 t  V3 R! z3 O
AB016625 12 24 35 676 \: U! K. @% l- H
AF008216 12 151 W# I8 I5 F+ O: b- ~
U25134 11 15
3 }; ^5 {  [: z+ p! u5 K9 e
题目4:在相应母字符串命名的文件夹下建立cds.txt文档
4 q, q; |- X/ p# w, m' B题目5:将hmrcds中母字符串后的纯数字字符串提取出来存在各自的cds.txt中
. ]3 q2 i/ r; J) W" {  R- ^" Y$ Q题目6:在相应的文件夹中,由cds.txt中储存的偶数个数字为根据,提取出base.txt中的字符串,并储存在由此在相应文件夹下建立的ex1.txt,ex2.txt……中~,例如在AB016625命名的文件夹下,在base.txt中取出12-24的字符串存在ex1.txt,取出35-67的字符串存在ex2.txt中~
/ n1 k% m. C/ a/ `' D是不是看的头大~~~
: a, J0 d6 W* W
2 ?: f* t+ I  l) K5 T) v( p* U) V题目4小弟可以做出来,题目5,小弟用正则表达式实在做不出来,题目6还没做到
- M- n1 l- x4 I7 X, b0 o8 ?/ a另外,小弟今天知道用
6 @' l& f( r; O/ q, Wf = fopen('fasta.txt','rt'); % t 属性根据需要可省略
# B% c& P& j# ^- G2 }: _- @0 T7 W1 bx = fread(f,'*char');; O" j- b; U9 t9 u, S
fclose(f);
5 L7 w6 d% T+ |. d7 m3 @7 |x=x'" Q7 Z5 U! _' A, s
可以将文档以字符串形式读入(textread读取后是一个cell格式),于是就用
8 k' w; c" F& x$ l5 s! Q( l. ufname1=regexpi(x,'(?<=>)\w+','match')
6 F+ M) J5 Y0 a  p3 A" G来完成题目题目1中的提取母字符串,结果在matlab运行后,不出现结果,同时cpu使用达到50%,不知道怎么回事~大家指点小弟下吧~~~
0 ]& J) g; C( \5 i, }崩溃。。附件上传了但是黏贴不了。不知道怎么回事有需要的加我Q Q : 1036300382
"真诚赞赏,手留余香"
还没有人打赏,支持一下
楼主热帖
帖文化:【文明发帖 和谐互动】 社区精神:【创新、交流、互助、共享】
您需要登录后才可以回帖 登录 | 立即加入

本版积分规则

招聘斑竹

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

GMT+8, 2026-3-18 14:55

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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