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

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

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

[复制链接]

该用户从未签到

尚未签到

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

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

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

×
本帖最后由 nxhylyh 于 2010-2-17 11:04 编辑
' Y  `9 B. A# ]9 L: N
- h% n6 v0 @/ }6 z* F$ L先说点废话~老师在寒假给小弟一个课题,就是在MATLAB中运用正则表达式来处理txt文档,小弟matlab新手~正则表达式中文资料太少了~英文又太差劲,所以对英文资料只好自动过滤了~摸索了半个多月,删删改改,论坛也去了好多个·~~自~希望大家看看~先介绍下附件1的格式:! `% ]' B1 o. s# P& f% p
>AB016625. e/ a0 @% P- h/ D
GCGGCCCAGGCCCGGAACCTTCCCTGGTCGTGCG# ~! `8 ?" X% j# e  S
>AF008216
. B# {6 {( h3 O% RAAGCTTTCCT
; f8 D: v/ K3 t: M# E
题目1:将'>'符号后跟的的字符串(母字符串)提取出来并建立以字符串命名的文件夹(如文件夹ABO16625,文件夹AF008216)' r% ~' V/ E4 K" f: l2 d- F: I
题目2:在相应的文件下建立base.txt* n: T0 k1 K; t) C
题目3:将母字符串下面的字符串(子字符串)提取出来储存在相应的base.txt里面
$ a6 C" a' ~# S. W6 C0 O+ D8 C这3个题目,小弟摸爬滚打算是做出来了,共享如下:

  1. 0 n- X7 D  T6 Z: o6 [
  2. clc;clear;
    / b: @& I' \, w% L! C3 B) v
  3. file=fopen('fasta.txt','r');
    5 O1 p$ j: u; N2 T' `
  4. fname={};fname1={};
    3 T( D. ^: Y# D) u- s# R
  5. fbase={};, \7 r1 ~# N3 b0 c2 f
  6. while feof(file)==0
    " Q% v5 g- \! b  G" G9 g
  7.       str=fgetl(file);
    1 V- s8 L1 A# z5 I
  8.       fname1=regexpi(str,'(?<=>)[A-Z0-9]+$','match');
    4 m+ h: J& J  d! R. S* @! S8 p
  9.       fbase=regexpi(str,'^[a-z]+$','match');
    0 l% e5 d* j1 e2 V) n  p
  10.       if ~isempty(fname1)
    / F( P/ T+ O! Z5 E) V/ }9 X
  11.         mkdir(fname1{1});
      {/ X! A1 C4 ?
  12.         k1=strcat('D:\mat\work\',fname1{1},'\base.txt');7 h; a6 s/ |; [4 m" Q
  13.         fname=[fname; fname1];
    5 ]8 L/ n3 X9 \7 Z: B% [7 f
  14.         fname1={};
    3 O) d/ o& l4 l: N5 K) s
  15.       end1 P( L6 T* A. ~
  16.        if ~isempty(fbase)
    2 U: J2 a3 `' E$ V
  17.         fid1=fopen(k1,'a');
    * v8 s! h* y# Q- y9 R% i
  18.         fwrite(fid1,fbase{1});
    : d5 q+ |) |& v4 ~8 k, D
  19.         fclose(fid1); - w8 K: d& Q! H$ \: `) v# [
  20.         fbase1={};
    * B0 }& M6 Y2 ~8 r8 w4 w& y
  21.        end
    3 i' Q0 N+ R  U5 e9 c8 w2 a7 O
  22. end
    * w( W8 p* {" _  T5 ?
  23. fclose('all');
    1 u  P+ D6 B4 C: W
复制代码
但是接下来的题目小弟实在困惑不已,望各位指教
! [8 I& b* p+ k  r6 L先介绍hmrcds格式:
4 ?" J% P5 V* ?( `! ^

9 S; N0 g- x+ \$ J$ d3 K: ~AB016625 12 24 35 67$ i5 @, Q% X/ w8 H4 r' t4 T
AF008216 12 15( b$ n; @* p6 X, I+ G
U25134 11 15

) K! M, N$ |; j% l* E题目4:在相应母字符串命名的文件夹下建立cds.txt文档1 Y" h- a/ C% Q. g
题目5:将hmrcds中母字符串后的纯数字字符串提取出来存在各自的cds.txt中" o/ k, N: l( |" _2 F6 m( r9 x
题目6:在相应的文件夹中,由cds.txt中储存的偶数个数字为根据,提取出base.txt中的字符串,并储存在由此在相应文件夹下建立的ex1.txt,ex2.txt……中~,例如在AB016625命名的文件夹下,在base.txt中取出12-24的字符串存在ex1.txt,取出35-67的字符串存在ex2.txt中~4 u% ]6 U' \9 }$ A1 N( [
是不是看的头大~~~. c& `, g; a, W& w  r8 W( V
% B! m/ ]2 V+ d5 t# _7 I
题目4小弟可以做出来,题目5,小弟用正则表达式实在做不出来,题目6还没做到
* l* z9 P# m2 W另外,小弟今天知道用
" x& q+ {  q& }$ s, ]f = fopen('fasta.txt','rt'); % t 属性根据需要可省略( P. ?2 d) J- N+ r
x = fread(f,'*char');$ d4 ~) s0 U) t) x" n6 e
fclose(f);
( c7 \" B8 R, k- ~" Lx=x'
5 K# |* S) a; o# H2 u8 |' Y! v可以将文档以字符串形式读入(textread读取后是一个cell格式),于是就用
: v1 C* S! X3 H  x3 [fname1=regexpi(x,'(?<=>)\w+','match')% {& ~' G7 M) g' K& [
来完成题目题目1中的提取母字符串,结果在matlab运行后,不出现结果,同时cpu使用达到50%,不知道怎么回事~大家指点小弟下吧~~~
* h7 z* O2 A8 d7 C, D崩溃。。附件上传了但是黏贴不了。不知道怎么回事有需要的加我Q Q : 1036300382
"真诚赞赏,手留余香"
还没有人打赏,支持一下
楼主热帖
帖文化:【文明发帖 和谐互动】 社区精神:【创新、交流、互助、共享】
您需要登录后才可以回帖 登录 | 立即加入

本版积分规则

招聘斑竹

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

GMT+8, 2025-4-21 13:15

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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