作者 主題: 正規表達式程式上的問題(不確定是 RE)  (閱讀 3057 次)

0 會員 與 1 訪客 正在閱讀本文。

abelyang

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 1097
    • 檢視個人資料
最近在寫一個 RE 的程式,一般的 match 狀況都很好處理
像:
代碼: [選擇]
regex_t *pattern_buffer;
struct re_registers regs;
int ret=0;
pattern_buffer=(regex_t *) malloc( sizeof(regex_t));
pattern_buffer->buffer = NULL;
pattern_buffer->allocated = 0;
pattern_buffer->used = 0;
pattern_buffer->fastmap = NULL;
pattern_buffer->fastmap_accurate = 0;
pattern_buffer->translate = NULL;
pattern_buffer->can_be_null = 0;
pattern_buffer->re_nsub = 0;
pattern_buffer->no_sub = 0;
pattern_buffer->not_bol = 0;
pattern_buffer->not_eol = 0;
re_compile_pattern( dst,
                      strlen(dst),
                      pattern_buffer);
cflags = REG_NEWLINE | REG_EXTENDED;
id = regcomp( pattern_buffer, dst, cflags);
...

像 re_match, re_search (GNU),regexec (POSIX) 等都是 search
而以,而我要的功能是 replacement , 如 sed 等
1234567890  123\(.*\)0 , 的 \1 要取 456789
我在想,這像的功能以 RE 來看是較有可能的,
不過又沒有 function,我也去看了 sed 的 source code ,
不過實在有點復雜 ....

想請教,是否有人知道如何處理 ?
或是提供一個參考方向 ?
google 我也找了不少了,但尚無什麼頭緒

jade-rabbit

  • 鑽研的研究生
  • *****
  • 文章數: 833
  • 性別: 男
    • 檢視個人資料
正規表達式程式上的問題(不確定是 RE)
« 回覆 #1 於: 2004-04-23 21:17 »
其實這疑問我也存在滿久了。一直沒用過 POSIX C 的 regex functions...
剛剛找了 PCRE 的 manual,好像也沒講到 replace/substitute 。

且 FSF GNU 的程式其實不太容易看懂阿。
記得以前光是懷疑為什麼 tail 可以處理任何大小的 file 去看了一下源碼,就有得追了。
--(中也者天下之大本也,和也者天下之達道也)--