PCDVD數位科技討論區

PCDVD數位科技討論區 (https://www.pcdvd.com.tw/index.php)
-   七嘴八舌異言堂 (https://www.pcdvd.com.tw/forumdisplay.php?f=12)
-   -   C 語言的測驗題 (https://www.pcdvd.com.tw/showthread.php?t=1088332)

anderson1127 2015-09-26 11:39 PM

darkangel老大已經把我之前遇上的難題都給說清楚了,非常感謝!!

我印像中記得,PCRE有些沒有support Regular Expression的語法,剛剛好是我想用的部份 ...
所以我才沒用PCRE來寫我現在做的security program , 我後來是自己寫了一個副程式
去模仿RE的做法 , 去做出來的!! Pattern 部份我就不明說了 , 我寫這個code的目的
主要是從一堆亂數產生的(A-Za-z0-9)的超長字串裡取出我想要的特定字串 ,取出之後
再進行排列組合變成我的DeCryption password !!

因為我用的那個RE語法有點複雜,PCRE似乎剛好沒支援,讓我有點失落,因為Perl的RE真是太強了,也太好用了!!
我也承認,玩Linux這麼多年以來,我幾乎都在用Perl / PHP這兩個為主,sed / awk 我根本沒用過 , 也不想用!! 主因就是我已經會Perl 了.... :ase :ase :ase

現在的C也是憑著學生時代的記憶在寫的程式,雖然都忘得七八成了 , 但還是可以寫一些
短小的程式 , 尤其是pointer我還記得很清楚,觀念也還好!! 所以還可以勉強寫一些C語言程式...

silent 2015-09-27 12:17 AM

兩三頁討論就看到programmer幾種不同的思維和工作方法,成品應該也會有所不同,
想到這篇老文章:
http://www.techrepublic.com/blog/10...r-in-the-field/

Adsmt 2015-09-27 01:52 AM

引用:
作者darkangel
re 的 ? 從來都不是匹配 any character,從 posix re, extension, 或是 pcre 到各平台不同實作,所有的 ? 基本上都是 greedy switch,不是 match any character。
有人會說,那我 ls 的 ? 是 match any character 啊,* 是 match any string,很抱歉,那東西叫 glob/wildcard,別把這兩者搞混,真不懂我在講什麼,請在 linux 下執行 man 7 glob
http://man7.org/linux/man-pages/man7/glob.7.html
re 在各不同的實作裡,除了版本不同有所擴展之外,基本的 match rule 都是完全一樣。pcre > re ex > re,大都是一層層堆上去的,也就是 perl re 跟 pcre 提供最多功能,re ex 次之,posix re 最少。
至於各不同應用程式之間實作最大的差異主要是在於 \d 這類跳脫字元的定義,所以我寫 re 一直都會避開使用 \d 這類的寫法,而是用 [0-9] 這種標準寫法。
因為我寫過啊... 我 20 年前用 ...

抱歉真的有,不要以為LINUX就是全世界了..... :jolin:

很多編輯器自帶的 RE 語法和 LINUX, Perl 的標準並不同,當然你也可以說那是不入流的,但那確實存在。絕不是你說的 "在各不同的實作裡,除了版本不同有所擴展之外,基本的 match rule 都是完全一樣。" :stupefy:

不信去google一下ultraedit帶的三種不同版本的 RE 引擎,看看我說的對不對。

rockindy 2015-09-27 03:15 AM

引用:
作者LR2001
請默寫出 C 語言算符的優先順序,這個考題會很機車嗎?


如果是小弟出題
我會給予一個跟標準不同的算符優先順序表
然後問應考者一些 expressions 根據此表在 evaluate 之後的值是多少?

Beeru 2015-09-28 01:11 AM

好讀易修改才是王道... :agree:

saten 2015-10-02 06:29 PM

會 DEBUG的 比會死念書的強

b4283 2015-10-02 07:40 PM

引用:
作者Adsmt
抱歉真的有,不要以為LINUX就是全世界了..... :jolin:

很多編輯器自帶的 RE 語法和 LINUX, Perl 的標準並不同,當然你也可以說那是不入流的,但那確實存在。絕不是你說的 "在各不同的實作裡,除了版本不同有所擴展之外,基本的 match rule 都是完全一樣。" :stupefy:

不信去google一下ultraedit帶的三種不同版本的 RE 引擎,看看我說的對不對。

更正確的說在 regex 裡, ? 和 * 是數量詞,? 代表 zero or one,* 代表 zero or more。
用作 globbing 時,其實是 what to match + match how many 的複合資訊。
globbing 的 *,相當於 regex 的 .*
globbing 的 ?,相當於 regex 的 .

事實上就是有 POSIX regex,POSIX extended regex 和 PCRE 這三種標準。
grep, sed, awk 使用 POSIX (extended) regex、perl 後來獨立發展出一套強大的規則,包括 non-greedy qualifier、back-tracking reference 等等,後來才又 backport 成為 PCRE,讓 C 世界可以有比較人性化的 regex 可使用。

中心思想是,user 學了一套 regex,大家共同遵守這一套 regex 能夠通用在各個不同的軟體中,效益才會最大化。有一定的規範,user 就知道能夠期待什麼。

darkangel 說的歷史源流和基本概念是完全正確,各家 editor 自己要發明什麼奇怪的 regex 那不是標準。
我相信 DA 也絕不是以 linux 的自大心態在討論,而是想更清楚地說明事情而已。
(擴大來說其實 regex 和 linux 完全是分開的兩件事)

darkangel 2015-10-02 10:26 PM

引用:
作者b4283
更正確的說在 regex 裡, ? 和 * 是數量詞,? 代表 zero or one,* 代表 zero or more。
用作 globbing 時,其實是 what to match + match how many 的複合資訊。
globbing 的 *,相當於 regex 的 .*
globbing 的 ?,相當於 regex 的 .

事實上就是有 POSIX regex,POSIX extended regex 和 PCRE 這三種標準。
grep, sed, awk 使用 POSIX (extended) regex、perl 後來獨立發展出一套強大的規則,包括 non-greedy qualifier、back-tracking reference 等等,後來才又 backport 成為 PCRE,讓 C 世界可以有比較人性化的 regex 可使用。

中心思想是,user 學了一套 regex,大家共同遵守這一套 regex 能夠通用在各個不同的軟體中,效益才會最大化。有一定的規範,user 就知道能夠期待什麼。

darkangel 說的歷史源流和基本概念是完全正確,各家 editor 自己要發明什麼奇怪的 regex 那不是標準。
我相...


您真是高手,說得真好。
其實這沒什麼好辯的啦,原本就是我不對,我本來就不應該回應的。
是我自己魯莽,畢竟一隻三萬塊的猴子,沒人會把他說的話當一回事是很正常的。
人之患在好為人師,本猴才疏學淺,修為不足,讓您見笑了。

:laugh: :laugh: :laugh: :laugh: :laugh:

oversky. 2015-10-02 10:32 PM

請問一下 vi/vim 是從那一系列發展出來的?

darkangel 2015-10-02 10:55 PM

引用:
作者oversky.
請問一下 vi/vim 是從那一系列發展出來的?


傳言是由 ed 衍生出來的。
http://linux.die.net/man/1/ed


所有的時間均為GMT +8。 現在的時間是08:44 AM.

vBulletin Version 3.0.1
powered_by_vbulletin 2025。