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

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

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

[复制链接]

该用户从未签到

尚未签到

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

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

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

×
本帖最后由 nxhylyh 于 2010-2-17 11:04 编辑
) @7 J2 x0 p8 C6 W/ D" ?$ w) @' O. B6 T, O0 b$ m7 b& c
先说点废话~老师在寒假给小弟一个课题,就是在MATLAB中运用正则表达式来处理txt文档,小弟matlab新手~正则表达式中文资料太少了~英文又太差劲,所以对英文资料只好自动过滤了~摸索了半个多月,删删改改,论坛也去了好多个·~~自~希望大家看看~先介绍下附件1的格式:$ {- Q. W8 L5 n' e% `2 _: G5 i
>AB0166252 E6 V8 ~- [) b4 f' K, y
GCGGCCCAGGCCCGGAACCTTCCCTGGTCGTGCG
; N3 Q& ^$ B5 H+ O$ h>AF008216
9 h9 L; b  j- t- KAAGCTTTCCT
' \7 f5 l6 b- s2 q" f% F
题目1:将'>'符号后跟的的字符串(母字符串)提取出来并建立以字符串命名的文件夹(如文件夹ABO16625,文件夹AF008216)
+ V4 q& _: w; I题目2:在相应的文件下建立base.txt. a6 Y/ ]( k; _) [5 n; U. C/ k7 L
题目3:将母字符串下面的字符串(子字符串)提取出来储存在相应的base.txt里面0 h5 u/ I8 _1 I; B. ^- e
这3个题目,小弟摸爬滚打算是做出来了,共享如下:
  1. ' c' |) T' ?: s
  2. clc;clear;5 J* a& C' o6 p; o& A: ^- N
  3. file=fopen('fasta.txt','r');( U  d& K! m, S5 h7 J
  4. fname={};fname1={};
    - b) ]8 B% m% K* _" k7 z
  5. fbase={};- a# b* p7 N! ?. w
  6. while feof(file)==0
    9 s( w( o. T( W+ d, m( J+ w/ d+ b
  7.       str=fgetl(file);
    ( H  ^. }& h$ x
  8.       fname1=regexpi(str,'(?<=>)[A-Z0-9]+$','match');
    1 d! n* b0 {) F; F% H# ?
  9.       fbase=regexpi(str,'^[a-z]+$','match');
    ( a7 J; c. o3 Y
  10.       if ~isempty(fname1)
      C, h7 O6 g3 t! F) Y' G
  11.         mkdir(fname1{1});, W! D% ^9 ]- u6 T, {
  12.         k1=strcat('D:\mat\work\',fname1{1},'\base.txt');6 }, H* q7 x0 E% e
  13.         fname=[fname; fname1];
    2 y# d, k% p1 W$ G& h
  14.         fname1={};
    ; x0 x5 X$ ^8 O2 p: ~5 q1 D6 ]
  15.       end6 t( s: \# ^# Z7 Y# N
  16.        if ~isempty(fbase)
    ! R5 P( {: Y6 d* }) H
  17.         fid1=fopen(k1,'a');
    + i, }; q/ K: [; p
  18.         fwrite(fid1,fbase{1});
    6 q% _7 ^. n8 `* x' U; L7 L
  19.         fclose(fid1); ' r# Q4 s* {; U
  20.         fbase1={};
    ) r' J9 s% d4 i* q1 V6 f
  21.        end) n: l, M" H. t& L0 p- j* _8 p- |% X) g
  22. end" Q, |0 I! c9 B1 ]5 ?" J/ x9 F' E* ~% R
  23. fclose('all');
    5 c- n$ o* C, T& T  v: H9 Y
复制代码
但是接下来的题目小弟实在困惑不已,望各位指教4 K1 l- d& a9 I
先介绍hmrcds格式:
+ f0 A1 I" C/ u0 N0 i- H
/ e5 S# A2 W& u9 d) e+ |5 @
AB016625 12 24 35 67
( v; `& \* l1 |/ eAF008216 12 154 d! l% T7 y  }( [- H
U25134 11 15

6 Y' u& k* b1 d' D0 Z3 K题目4:在相应母字符串命名的文件夹下建立cds.txt文档
4 G$ ^! |4 D! g1 i7 e题目5:将hmrcds中母字符串后的纯数字字符串提取出来存在各自的cds.txt中9 E# y9 v& o; l; ?
题目6:在相应的文件夹中,由cds.txt中储存的偶数个数字为根据,提取出base.txt中的字符串,并储存在由此在相应文件夹下建立的ex1.txt,ex2.txt……中~,例如在AB016625命名的文件夹下,在base.txt中取出12-24的字符串存在ex1.txt,取出35-67的字符串存在ex2.txt中~/ T. p' a, G  a* Y0 ^' o) X
是不是看的头大~~~* t2 y8 Q: i5 e6 k1 ?5 U* f
, z! [5 d# j9 p; z6 l' w* P
题目4小弟可以做出来,题目5,小弟用正则表达式实在做不出来,题目6还没做到3 U! R7 h6 r0 W* w7 A( b2 l$ u  a
另外,小弟今天知道用
0 x$ C# P# W: u2 Df = fopen('fasta.txt','rt'); % t 属性根据需要可省略1 |5 f9 L7 m- E( F" t7 G0 v3 ~
x = fread(f,'*char');( z) h8 ~5 F( U9 l5 S
fclose(f);2 x1 \7 Z: S6 q- _' i6 f
x=x'* b; ?/ [  {, d) u  \
可以将文档以字符串形式读入(textread读取后是一个cell格式),于是就用
0 S$ G4 P/ R& G" K! Ofname1=regexpi(x,'(?<=>)\w+','match')
* M6 F# r# i  S" |2 w/ d3 I来完成题目题目1中的提取母字符串,结果在matlab运行后,不出现结果,同时cpu使用达到50%,不知道怎么回事~大家指点小弟下吧~~~, ^9 r9 o4 _1 h( C' p
崩溃。。附件上传了但是黏贴不了。不知道怎么回事有需要的加我Q Q : 1036300382
"真诚赞赏,手留余香"
还没有人打赏,支持一下
楼主热帖
帖文化:【文明发帖 和谐互动】 社区精神:【创新、交流、互助、共享】
您需要登录后才可以回帖 登录 | 立即加入

本版积分规则

招聘斑竹

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

GMT+8, 2026-4-30 16:28

Powered by Discuz! X3.5 Licensed

© 2001-2026 Discuz! Team.

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