[程式] 判斷文章裡出現關鍵字行數

看板C_Sharp作者 (妤欣)時間4年前 (2020/04/16 19:10), 4年前編輯推噓7(704)
留言11則, 4人參與, 4年前最新討論串1/1
目前查到的用法是用regex的match 先用一個list <string>紀錄大約100個關鍵字 然後用for loop一個一個去檢查來源文字檔是否有maych到關鍵字 再印出出現關鍵字的行數 例如: pattern = string.format(“/b{0}/b”, key); foreach key in keyword list foreach Match x in regex.match(src, pattern) print at line xxx there is x.value 1. 請問有比這個還有效率的方法嗎 2.這個有點像是編譯器判別關鍵字 例如: data 則 ccdata ok data err data \n err 請問regex要怎麼定義,試都試不出來 謝謝~ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.71.125.129 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/C_Sharp/M.1587035414.A.780.html

04/16 21:14, 4年前 , 1F
感覺沒有用regex的必要? 用string.contains 會不會更好?
04/16 21:14, 1F
不一樣~ 因為ccdata這個case 用你的方法也會找到 ※ 編輯: OfficeGL (111.71.125.129 臺灣), 04/16/2020 21:39:29

04/16 21:41, 4年前 , 2F
所以只找 "data" only?
04/16 21:41, 2F
嗯嗯,就像是編譯器在找關鍵字一樣, 要找int 而不能是 intyyxx ※ 編輯: OfficeGL (111.71.125.129 臺灣), 04/16/2020 21:43:45

04/16 22:15, 4年前 , 3F
pattern = string.format(@"/b{0}/b", key);
04/16 22:15, 3F

04/16 22:20, 4年前 , 4F
應該是沒加 @ 剛試了一下
04/16 22:20, 4F

04/17 00:13, 4年前 , 5F
你有100多個關鍵字,那反過來用HashTable應該比較快
04/17 00:13, 5F

04/17 00:16, 4年前 , 6F
把關鍵字都先丟到Hashset裡面,再把每個句子用字緣分割去
04/17 00:16, 6F

04/17 00:16, 4年前 , 7F
拆成多個words,再檢查任一字是否在Hashset裡面
04/17 00:16, 7F

04/17 00:17, 4年前 , 8F
字緣分割最簡單就用Split
04/17 00:17, 8F

04/17 00:26, 4年前 , 9F
也可以用 | 去串接正則的多個關鍵字,應該也蠻快的
04/17 00:26, 9F

04/19 12:14, 4年前 , 10F
有點像compiler中的lexical parser
04/19 12:14, 10F

05/06 20:44, 4年前 , 11F
LINQ?
05/06 20:44, 11F
文章代碼(AID): #1Uc3qMU0 (C_Sharp)