作者OfficeGL (妤欣)
看板C_Sharp
标题[程式] 判断文章里出现关键字行数
时间Thu Apr 16 19:10:12 2020
目前查到的用法是用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://webptt.com/cn.aspx?n=bbs/C_Sharp/M.1587035414.A.780.html
1F:推 mark0708: 感觉没有用regex的必要? 用string.contains 会不会更好?04/16 21:14
不一样~ 因为ccdata这个case 用你的方法也会找到
※ 编辑: OfficeGL (111.71.125.129 台湾), 04/16/2020 21:39:29
2F:推 mark0708: 所以只找 "data" only?04/16 21:41
嗯嗯,就像是编译器在找关键字一样,
要找int 而不能是 intyyxx
※ 编辑: OfficeGL (111.71.125.129 台湾), 04/16/2020 21:43:45
3F:推 mark0708: pattern = string.format(@"/b{0}/b", key); 04/16 22:15
4F:推 mark0708: 应该是没加 @ 刚试了一下 04/16 22:20
5F:推 Litfal: 你有100多个关键字,那反过来用HashTable应该比较快 04/17 00:13
6F:→ Litfal: 把关键字都先丢到Hashset里面,再把每个句子用字缘分割去 04/17 00:16
7F:→ Litfal: 拆成多个words,再检查任一字是否在Hashset里面 04/17 00:16
8F:→ Litfal: 字缘分割最简单就用Split 04/17 00:17
9F:推 Litfal: 也可以用 | 去串接正则的多个关键字,应该也蛮快的 04/17 00:26
10F:推 jinmin88: 有点像compiler中的lexical parser 04/19 12:14
11F:→ disabledman: LINQ? 05/06 20:44