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

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

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

[复制链接]

该用户从未签到

尚未签到

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

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

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

×
本帖最后由 nxhylyh 于 2010-2-17 11:04 编辑 $ D& ?4 V( }* }
; A# b- r/ r- w
先说点废话~老师在寒假给小弟一个课题,就是在MATLAB中运用正则表达式来处理txt文档,小弟matlab新手~正则表达式中文资料太少了~英文又太差劲,所以对英文资料只好自动过滤了~摸索了半个多月,删删改改,论坛也去了好多个·~~自~希望大家看看~先介绍下附件1的格式:
! Q8 z% h- m8 T3 s, J
>AB016625( m, c7 F7 S# @/ I- x3 G$ V
GCGGCCCAGGCCCGGAACCTTCCCTGGTCGTGCG
8 A" \+ l1 l& A! K. [; H# @' s5 k>AF008216
  n/ H# X' X) j- ~AAGCTTTCCT
2 o0 l: J1 b, ^. B7 r
题目1:将'>'符号后跟的的字符串(母字符串)提取出来并建立以字符串命名的文件夹(如文件夹ABO16625,文件夹AF008216); L+ Z- e3 M4 p, M2 m
题目2:在相应的文件下建立base.txt; q: p& w+ U, h# f9 @5 g: l, X7 {  h
题目3:将母字符串下面的字符串(子字符串)提取出来储存在相应的base.txt里面
, ~- f) R1 e  W% m5 t0 s5 S+ b这3个题目,小弟摸爬滚打算是做出来了,共享如下:
  1. , `' k/ O: r0 y8 z7 d/ U$ j
  2. clc;clear;# v9 C1 u8 Y' I0 K7 `6 z% f. ]
  3. file=fopen('fasta.txt','r');
    $ b5 R# i6 {; k/ S0 Q# \( D$ a& J
  4. fname={};fname1={};# S; q, U$ m+ e6 @
  5. fbase={};6 a0 N4 B6 O5 T. S& _9 p/ q
  6. while feof(file)==0
    , A: z: N" l& m( I$ _8 Z
  7.       str=fgetl(file);: \2 C# {3 G, U  M% k3 Z
  8.       fname1=regexpi(str,'(?<=>)[A-Z0-9]+$','match');
    / b# _7 ~4 q$ a6 `( L7 `+ Y
  9.       fbase=regexpi(str,'^[a-z]+$','match');
    $ W" o" J5 R' I
  10.       if ~isempty(fname1)6 l/ U/ q& G5 v
  11.         mkdir(fname1{1});
    6 b4 {' y! _' P
  12.         k1=strcat('D:\mat\work\',fname1{1},'\base.txt');
    ' @) M  t) p/ S0 ~3 k$ G7 S
  13.         fname=[fname; fname1];
    6 s7 v7 T: h; S) K' m/ I  t
  14.         fname1={};
    # X# ^* r3 N% M- r7 r  f; {% V% M
  15.       end
    9 T" E6 ~" X$ a: _3 `" B' c
  16.        if ~isempty(fbase)" `8 K) o1 B" g+ L$ y, s" u' m0 m
  17.         fid1=fopen(k1,'a');; u2 m# T" a# |. J
  18.         fwrite(fid1,fbase{1});$ o2 j/ C5 p8 J% {1 o
  19.         fclose(fid1);
    " \7 S- S# X  h
  20.         fbase1={};8 |8 g% O  _2 d- Q
  21.        end
      V7 S% ?! V+ Q( H( i1 P: A
  22. end" C8 N, J* O6 A
  23. fclose('all');
    ( A5 ]% U' \2 }3 R7 j5 l
复制代码
但是接下来的题目小弟实在困惑不已,望各位指教! W4 _7 C) Q! u% Q6 o$ C# e
先介绍hmrcds格式:% h; p. l$ ^  P& A/ A  Z

) K* B* K" C' @+ UAB016625 12 24 35 67
! }" r3 n8 F+ r, [AF008216 12 15
0 O1 t( h5 h- y5 q8 oU25134 11 15
& @* n( p/ q7 p! G2 ~
题目4:在相应母字符串命名的文件夹下建立cds.txt文档$ ?" ]& L, N  E. N
题目5:将hmrcds中母字符串后的纯数字字符串提取出来存在各自的cds.txt中. c! r4 Q3 I5 Z' N
题目6:在相应的文件夹中,由cds.txt中储存的偶数个数字为根据,提取出base.txt中的字符串,并储存在由此在相应文件夹下建立的ex1.txt,ex2.txt……中~,例如在AB016625命名的文件夹下,在base.txt中取出12-24的字符串存在ex1.txt,取出35-67的字符串存在ex2.txt中~4 A% u- l0 e* y! M
是不是看的头大~~~3 n( C, W; H4 R; ^# @
7 z* R, e: m7 {& }& l
题目4小弟可以做出来,题目5,小弟用正则表达式实在做不出来,题目6还没做到
4 H& k4 J# E2 @6 ]6 j2 g4 F3 Z3 T另外,小弟今天知道用
4 t# A, G2 T# x# t7 }f = fopen('fasta.txt','rt'); % t 属性根据需要可省略
' g# d+ |, S  hx = fread(f,'*char');5 f) _7 q+ C; T1 [- p
fclose(f);
; n0 V* S! ?8 k3 u! l' A3 |x=x'
  u: l5 \" X3 C; Z/ [可以将文档以字符串形式读入(textread读取后是一个cell格式),于是就用
% Y2 S" N5 Q  i6 @8 jfname1=regexpi(x,'(?<=>)\w+','match')
7 e/ Q' l% f& V! F: ^来完成题目题目1中的提取母字符串,结果在matlab运行后,不出现结果,同时cpu使用达到50%,不知道怎么回事~大家指点小弟下吧~~~
# {, o; M4 t7 i1 F$ E, \崩溃。。附件上传了但是黏贴不了。不知道怎么回事有需要的加我Q Q : 1036300382
"真诚赞赏,手留余香"
还没有人打赏,支持一下
楼主热帖
帖文化:【文明发帖 和谐互动】 社区精神:【创新、交流、互助、共享】
您需要登录后才可以回帖 登录 | 立即加入

本版积分规则

招聘斑竹

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

GMT+8, 2026-11-14 05:41

Powered by Discuz! X3.5 Licensed

© 2001-2026 Discuz! Team.

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