Znn3bq.jpeg
²é¿´: 297  |  »Ø¸´: 0
µ±Ç°Ö÷ÌâÒѾ­´æµµ¡£

miRNA

ÖÁ×ðľ³æ (Ö°Òµ×÷¼Ò)

Ë®ÍõÖ®Íõ£¨ÓÞÓÞѧ԰¹ÜÀíÔ±£©

[½»Á÷] ר¼Ò½ÌÄúÈçºÎÔÚCÓïÑÔÖÐÇÉÓÃÕýÔò±í´ïʽ

Èç¹ûÓû§ÊìϤLinuxϵÄsed¡¢awk¡¢grep»òvi£¬ÄÇô¶ÔÕýÔò±í´ïʽÕâÒ»¸ÅÄî¿Ï¶¨²»»áİÉú¡£ÓÉÓÚËü¿ÉÒÔ¼«´óµØ¼ò»¯´¦Àí×Ö·û´®Ê±µÄ¸´ÔÓ¶È£¬Òò´ËÏÖÔÚÒѾ­ÔÚÐí¶àLinuxʵÓù¤¾ßÖеõ½ÁËÓ¦Óá£Ç§Íò²»ÒªÒÔΪÕýÔò±í´ïʽֻÊÇPerl¡¢Python¡¢BashµÈ½Å±¾ÓïÑÔµÄרÀû£¬×÷ΪCÓïÑÔ³ÌÐòÔ±£¬Óû§Í¬Ñù¿ÉÒÔÔÚ×Ô¼ºµÄ³ÌÐòÖÐÔËÓÃÕýÔò±í´ïʽ¡£

±ê×¼µÄCºÍC++¶¼²»Ö§³ÖÕýÔò±í´ïʽ£¬µ«ÓÐһЩº¯Êý¿â¿ÉÒÔ¸¨ÖúC/C++³ÌÐòÔ±Íê³ÉÕâÒ»¹¦ÄÜ£¬ÆäÖÐ×îÖøÃûµÄµ±ÊýPhilip HazelµÄPerl-Compatible Regular Expression¿â£¬Ðí¶àLinux·¢Ðа汾¶¼´øÓÐÕâ¸öº¯Êý¿â¡£

±àÒëÕýÔò±í´ïʽ

ΪÁËÌá¸ßЧÂÊ£¬ÔÚ½«Ò»¸ö×Ö·û´®ÓëÕýÔò±í´ïʽ½øÐбȽÏ֮ǰ£¬Ê×ÏÈÒªÓÃregcomp()º¯Êý¶ÔËü½øÐбàÒ룬½«Æäת»¯Îªregex_t½á¹¹£º


int regcomp(regex_t *preg, const char *regex,
int cflags);




²ÎÊýregexÊÇÒ»¸ö×Ö·û´®£¬Ëü´ú±í½«Òª±»±àÒëµÄÕýÔò±í´ïʽ£»²ÎÊýpregÖ¸ÏòÒ»¸öÉùÃ÷Ϊregex_tµÄÊý¾Ý½á¹¹£¬ÓÃÀ´±£´æ±àÒë½á¹û£»²ÎÊýcflags¾ö¶¨ÁËÕýÔò±í´ïʽ¸ÃÈçºÎ±»´¦ÀíµÄϸ½Ú¡£

Èç¹ûº¯Êýregcomp()Ö´Ðгɹ¦£¬²¢ÇÒ±àÒë½á¹û±»ÕýÈ·Ìî³äµ½pregÖк󣬺¯Êý½«·µ»Ø0£¬ÈÎºÎÆäËüµÄ·µ»Ø½á¹û¶¼´ú±íÓÐijÖÖ´íÎó²úÉú¡£

Æ¥ÅäÕýÔò±í´ïʽ

Ò»µ©ÓÃregcomp()º¯Êý³É¹¦µØ±àÒëÁËÕýÔò±í´ïʽ£¬½ÓÏÂÀ´¾Í¿ÉÒÔµ÷ÓÃregexec()º¯ÊýÍê³ÉģʽƥÅ䣺


int regexec(const regex_t *preg,
const char *string, size_t nmatch,
regmatch_t pmatch[], int eflags);
typedef struct {
regoff_t rm_so;
regoff_t rm_eo;
} regmatch_t;



²ÎÊýpregÖ¸Ïò±àÒëºóµÄÕýÔò±í´ïʽ£¬²ÎÊýstringÊǽ«Òª½øÐÐÆ¥ÅäµÄ×Ö·û´®£¬¶ø²ÎÊýnmatchºÍpmatchÔòÓÃÓÚ°ÑÆ¥Åä½á¹û·µ»Ø¸øµ÷ÓóÌÐò£¬×îºóÒ»¸ö²ÎÊýeflags¾ö¶¨ÁËÆ¥ÅäµÄϸ½Ú¡£

ÔÚµ÷Óú¯Êýregexec()½øÐÐģʽƥÅäµÄ¹ý³ÌÖУ¬¿ÉÄÜÔÚ×Ö·û´®stringÖлáÓжദÓë¸ø¶¨µÄÕýÔò±í´ïʽÏàÆ¥Å䣬²ÎÊýpmatch¾ÍÊÇÓÃÀ´±£´æÕâЩƥÅäλÖõ쬶ø²ÎÊýnmatchÔò¸æËߺ¯Êýregexec()×î¶à¿ÉÒ԰ѶàÉÙ¸öÆ¥Åä½á¹ûÌî³äµ½pmatchÊý×éÖС£µ±regexec()º¯Êý³É¹¦·µ»ØÊ±£¬´Óstring+pmatch[0].rm_soµ½string+pmatch[0].rm_eoÊǵÚÒ»¸öÆ¥ÅäµÄ×Ö·û´®£¬¶ø´Óstring+pmatch[1].rm_soµ½string+pmatch[1].rm_eo£¬ÔòÊǵڶþ¸öÆ¥ÅäµÄ×Ö·û´®£¬ÒÀ´ËÀàÍÆ¡£

ÊÍ·ÅÕýÔò±í´ïʽ

ÎÞÂÛʲôʱºò£¬µ±²»ÔÙÐèÒªÒѾ­±àÒë¹ýµÄÕýÔò±í´ïʽʱ£¬¶¼Ó¦¸Ãµ÷Óú¯Êýregfree()½«ÆäÊÍ·Å£¬ÒÔÃâ²úÉúÄÚ´æÐ¹Â©¡£


void regfree(regex_t *preg);




º¯Êýregfree()²»»á·µ»ØÈκνá¹û£¬Ëü½ö½ÓÊÕÒ»¸öÖ¸Ïòregex_tÊý¾ÝÀàÐ͵ÄÖ¸Õ룬ÕâÊÇ֮ǰµ÷ÓÃregcomp()º¯ÊýËùµÃµ½µÄ±àÒë½á¹û¡£

Èç¹ûÔÚ³ÌÐòÖÐÕë¶Ôͬһ¸öregex_t½á¹¹µ÷ÓÃÁ˶à´Îregcomp()º¯Êý£¬POSIX±ê×¼²¢Ã»Óй涨ÊÇ·ñÿ´Î¶¼±ØÐëµ÷ÓÃregfree()º¯Êý½øÐÐÊÍ·Å£¬µ«½¨Òéÿ´Îµ÷ÓÃregcomp()º¯Êý¶ÔÕýÔò±í´ïʽ½øÐбàÒëºó¶¼µ÷ÓÃÒ»´Îregfree()º¯Êý£¬ÒÔ¾¡ÔçÊÍ·ÅÕ¼ÓõĴ洢¿Õ¼ä¡£

±¨¸æ´íÎóÐÅÏ¢

Èç¹ûµ÷Óú¯Êýregcomp()»òregexec()µÃµ½µÄÊÇÒ»¸ö·Ç0µÄ·µ»ØÖµ£¬Ôò±íÃ÷ÔÚ¶ÔÕýÔò±í´ïʽµÄ´¦Àí¹ý³ÌÖгöÏÖÁËijÖÖ´íÎ󣬴Ëʱ¿ÉÒÔͨ¹ýµ÷Óú¯Êýregerror()µÃµ½ÏêϸµÄ´íÎóÐÅÏ¢¡£


size_t regerror(int errcode,
const regex_t *preg, char *errbuf,
size_t errbuf_size);




²ÎÊýerrcodeÊÇÀ´×Ôº¯Êýregcomp()»òregexec()µÄ´íÎó´úÂ룬¶ø²ÎÊýpregÔòÊÇÓɺ¯Êýregcomp()µÃµ½µÄ±àÒë½á¹û£¬ÆäÄ¿µÄÊǰѸñʽ»¯ÏûÏ¢Ëù±ØÐëµÄÉÏÏÂÎÄÌṩ¸øregerror()º¯Êý¡£ÔÚÖ´Ðк¯Êýregerror()ʱ£¬½«°´ÕÕ²ÎÊýerrbuf_sizeÖ¸Ã÷µÄ×î´ó×Ö½ÚÊý£¬ÔÚerrbuf»º³åÇøÖÐÌîÈë¸ñʽ»¯ºóµÄ´íÎóÐÅÏ¢£¬Í¬Ê±·µ»Ø´íÎóÐÅÏ¢µÄ³¤¶È¡£

Ó¦ÓÃÕýÔò±í´ïʽ

×îºó¸ø³öÒ»¸ö¾ßÌåµÄʵÀý£¬½éÉÜÈçºÎÔÚCÓïÑÔ³ÌÐòÖд¦ÀíÕýÔò±í´ïʽ¡£



#include
#include
#include

/* È¡×Ó´®µÄº¯Êý */
static char* substr(const char*str,
unsigned start, unsigned end)
{
unsigned n = end - start;
static char stbuf[256];
strncpy(stbuf, str + start, n);
stbuf[n] = 0;
return stbuf;
}
/* Ö÷³ÌÐò */
int main(int argc, char** argv)
{
char * pattern;
int x, z, lno = 0, cflags = 0;
char ebuf[128], lbuf[256];
regex_t reg;
regmatch_t pm[10];
const size_t nmatch = 10;
/* ±àÒëÕýÔò±í´ïʽ*/
pattern = argv[1];
z = regcomp(?, pattern, cflags);
if (z != 0){
regerror(z, ?, ebuf, sizeof(ebuf));
fprintf(stderr, "%s: pattern '%s' \n",
ebuf, pattern);
return 1;
}
/* ÖðÐд¦ÀíÊäÈëµÄÊý¾Ý */
while(fgets(lbuf, sizeof(lbuf), stdin))
{
++lno;
if ((z = strlen(lbuf)) > 0 && lbuf[z-1]
== '\n')
lbuf[z - 1] = 0;
/* ¶ÔÿһÐÐÓ¦ÓÃÕýÔò±í´ïʽ½øÐÐÆ¥Åä */
z = regexec(?, lbuf, nmatch, pm, 0);
if (z == REG_NOMATCH) continue;
else if (z != 0) {
regerror(z, ?, ebuf, sizeof(ebuf));
fprintf(stderr, "%s: regcom('%s')\n",
ebuf, lbuf);
return 2;
}
/* Êä³ö´¦Àí½á¹û */
for (x = 0; x < nmatch && pm[x].rm_so != -1; ++ x)
{
if (!x) printf("%04d: %s\n", lno, lbuf);
printf(" $%d='%s'\n", x, substr(lbuf, pm[x].rm_so,
pm[x].rm_eo));
}
}
/* ÊÍ·ÅÕýÔò±í´ïʽ */
regfree(?);
return 0;
}


¡¡ÉÏÊö³ÌÐò¸ºÔð´ÓÃüÁîÐлñÈ¡ÕýÔò±í´ïʽ£¬È»ºó½«ÆäÔËÓÃÓÚ´Ó±ê×¼ÊäÈëµÃµ½µÄÿÐÐÊý¾Ý£¬²¢´òÓ¡³öÆ¥Åä½á¹û¡£Ö´ÐÐÏÂÃæµÄÃüÁî¿ÉÒÔ±àÒë²¢Ö´ÐиóÌÐò£º


# gcc regexp.c -o regexp
# ./regexp 'regex[a-z]*' < regexp.c
0003: #include
$0='regex'
0027: regex_t reg;
$0='regex'
0054: z = regexec(?, lbuf, nmatch, pm, 0);
$0='regexec'


С½á

¶ÔÄÇЩÐèÒª½øÐи´ÔÓÊý¾Ý´¦ÀíµÄ³ÌÐòÀ´Ëµ£¬ÕýÔò±í´ïʽÎÞÒÉÊÇÒ»¸ö·Ç³£ÓÐÓõŤ¾ß¡£±¾ÎÄÖØµãÔÚÓÚ²ûÊöÈçºÎÔÚCÓïÑÔÖÐÀûÓÃÕýÔò±í´ïʽÀ´¼ò»¯×Ö·û´®´¦Àí£¬ÒÔ±ãÔÚÊý¾Ý´¦Àí·½ÃæÄܹ»»ñµÃÓëPerlÓïÑÔÀà
ËÆµÄÁé»îÐÔ¡£

[ Last edited by »ÃÓ°ÎÞºÛ on 2006-11-13 at 08:01 ]
»Ø¸´´ËÂ¥

» ÊÕ¼±¾ÌûµÄÌÔÌûר¼­ÍƼö

source

» ²ÂÄãϲ»¶

¡¼ÓÞÓÞѧ԰¡½http://www.scifans.netÃâ·Ñ´úÀí|Ãâ·ÑÆÚ¿¯|ezproxy|ÎÄÏ×¼ìË÷|ѧÊõ×ÊÔ´|Ãâ·Ñ×ÊÔ´
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû
Ïà¹Ø°æ¿éÌø×ª ÎÒÒª¶©ÔÄÂ¥Ö÷ miRNA µÄÖ÷Ìâ¸üÐÂ
×î¾ßÈËÆøÈÈÌûÍÆ¼ö [²é¿´È«²¿] ×÷Õß »Ø/¿´ ×îºó·¢±í
[¿¼ÑÐ] 0854µ÷¼Á +5 ³¤¹­°Á 2026-04-12 7/350 2026-04-12 19:35 by yukihao
[¿¼ÑÐ] 297¹¤¿Æ£¬Çóµ÷¼Á? +4 ºÓÄÏũҵ´óѧ-ÄÜ 2026-04-12 4/200 2026-04-12 19:07 by xhongshuСºìÊí
[¿¼ÑÐ] ¸´ÊÔµ÷¼Á +13 »ý¼«ÏòÉÏ£» 2026-04-10 15/750 2026-04-12 18:32 by zhaokeyang
[¿¼ÑÐ] 290µ÷¼ÁÉúÎï0860 +26 ÍÛ¹þ¹þ£¬¡£ 2026-04-11 29/1450 2026-04-12 16:54 by ajpv·çÀ×
[¿¼ÑÐ] 295·ÖÇóµ÷¼Á +13 ?ÒªÉϰ¶? 2026-04-10 13/650 2026-04-12 15:37 by laoshidan
[¿¼ÑÐ] 346·Ö£¬¹¤¿Æ0854Çóµ÷¼Á£¬×¨Ë¶ +5 moser233 2026-04-12 5/250 2026-04-12 11:20 by 衳½³¾
[¿¼ÑÐ] 291Çóµ÷¼Á +8 ¹ØÒä±±. 2026-04-11 8/400 2026-04-12 09:32 by ÄæË®³Ë·ç
[¿¼ÑÐ] µ÷¼Á +10 ÔÂ@163.com 2026-04-11 10/500 2026-04-12 09:14 by zhouyuwinner
[¿¼ÑÐ] Çóµ÷¼Á£¬Ò»Ö¾Ô¸²ÄÁÏ¿ÆÑ§Ó빤³Ì985£¬365·Ö£¬ +8 ²Ä»¯Àî¿É 2026-04-11 10/500 2026-04-12 08:42 by 852137818
[¿¼ÑÐ] 307Çóµ÷¼Á +10 tzq94092 2026-04-10 10/500 2026-04-12 08:18 by wise999
[¿¼ÑÐ] ²ÄÁÏÓ뻯¹¤300Çóµ÷¼Á +39 Ф¿ªÎÄ 2026-04-09 43/2150 2026-04-12 01:30 by Çï¶¹²ËÑ¿
[¿¼ÑÐ] 297Çóµ÷¼Á +9 Kwgyz 2026-04-09 9/450 2026-04-11 10:09 by zhq0425
[¿¼ÑÐ] µ÷¼Á »¯Ñ§ 307 +21 73372112 2026-04-09 23/1150 2026-04-10 23:53 by wj165256
[¿¼ÑÐ] 314Çóµ÷¼Á +23 wakeluofu 2026-04-09 24/1200 2026-04-10 15:31 by MOF_Catal
[¿¼ÑÐ] Ò»Ö¾Ô¸211£¬»¯Ñ§Ñ§Ë¶£¬310·Ö£¬±¾¿ÆÖصãË«·Ç£¬Çóµ÷¼Á +27 ŬÁ¦·Ü¶·112 2026-04-07 30/1500 2026-04-10 15:06 by Kilig0317
[¿¼ÑÐ] ¿¼Ñе÷¼Á-²ÄÁÏÀà-284 +28 Ïë»»ÊÖ»ú²»Ïë½âÊ 2026-04-08 28/1400 2026-04-09 20:08 by µ¹Êý321?
[¿¼ÑÐ] Ò»Ö¾Ô¸ÖпÆÔº105500רҵ×Ü·Ö315Çóµ÷¼Á +6 lallalh 2026-04-09 7/350 2026-04-09 17:51 by lallalh
[¿¼ÑÐ] Çó¿¼ÑвÄÁϵ÷¼Á +3 ²Ä»¯Àî¿É 2026-04-07 3/150 2026-04-08 00:21 by JourneyLucky
[¿¼ÑÐ] 11408 325·Ö +3 jgtxuxgkx 2026-04-07 3/150 2026-04-07 23:10 by lbsjt
[¿¼ÑÐ] ²ÄÁϵ÷¼Á +17 СÁõͬѧ߹߹ 2026-04-06 18/900 2026-04-07 11:41 by Ê«Óë×ÔÓÉ
ÐÅÏ¢Ìáʾ
ÇëÌî´¦ÀíÒâ¼û