各位大神帮帮忙跪谢~(正则表达式)

huoxushini121 2014-08-07 10:22:43
最近做分词,如下的一段分词后的文字:
计算机/n (/wkz computer/n )/wky 俗称/v 电脑/n ,/wd 是/vshi 一/m 种/q 用于/v 高速/b 计算/vn 的/ude1 电子/n 计算机/n 器/ng ,/wd 可以/v 进行/vx 数值/n 计算/vn ,/wd 又/d 可以/v 进行/vx 逻辑/n 计算/vn ,/wd 还/d 具有/v 存储/vn 记忆/n 功能/n 。/wj 计算机/n 有/vyou 超级/b 计算机/n 、/wn 工业/n 控制/vn 计算机/n 、/wn 网络/n 计算机/n 、/wn 个人/n 计算机/n 、/wn 嵌入/v 式/k 计算机/n ,/wd 较/d 先进/a 的/ude1 计算机/n 有/vyou 光子/n 计算机/n 、/wn 量子/n 计算机/n 。/wj

想用正则表达式只留下/n /vn /ng 就是包含n前边的词

最后理想结果是:

计算机 computer 电脑 计算 电子 计算机....
实在写不出来,在线跪求~
...全文
181 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
huoxushini121 2014-08-08
  • 打赏
  • 举报
回复
都是高人 谢谢大神们,得好好学学正则表达式,LinQ了 !
q107770540 2014-08-08
  • 打赏
  • 举报
回复
引用 6 楼 q107770540 的回复:
string s = @"计算机/n (/wkz computer/n )/wky 俗称/v 电脑/n ,/wd 是/vshi 一/m 种/q 用于/v 高速/b 计算/vn 的/ude1 电子/n 计算机/n 器/ng ,/wd 可以/v 进行/vx 数值/n 计算/vn ,/wd 又/d 可以/v 进行/vx 逻辑/n 计算/vn ,/wd 还/d 具有/v 存储/vn 记忆/n 功能/n 。/wj 计算机/n 有/vyou 超级/b 计算机/n 、/wn 工业/n 控制/vn 计算机/n 、/wn 网络/n 计算机/n 、/wn 个人/n 计算机/n 、/wn 嵌入/v 式/k 计算机/n ,/wd 较/d 先进/a 的/ude1 计算机/n 有/vyou 光子/n 计算机/n 、/wn 量子/n 计算机/n 。/wj "; 
            MatchCollection ms = Regex.Matches(s, @"(\w*?)(?=/.?n.?)");
            foreach (Match m in Regex.Matches(s,@"\w+(?=/v?ng?)"))
            {
                Console.WriteLine(m.Value);
            }
这一行可以删除掉:
  MatchCollection ms = Regex.Matches(s, @"(\w*?)(?=/.?n.?)");
q107770540 2014-08-08
  • 打赏
  • 举报
回复

//结果:
计算机
computer
电脑
计算
电子
计算机
器
数值
计算
逻辑
计算
存储
记忆
功能
计算机
计算机
工业
控制
计算机
网络
计算机
个人
计算机
计算机
计算机
光子
计算机
量子
计算机
q107770540 2014-08-08
  • 打赏
  • 举报
回复
string s = @"计算机/n (/wkz computer/n )/wky 俗称/v 电脑/n ,/wd 是/vshi 一/m 种/q 用于/v 高速/b 计算/vn 的/ude1 电子/n 计算机/n 器/ng ,/wd 可以/v 进行/vx 数值/n 计算/vn ,/wd 又/d 可以/v 进行/vx 逻辑/n 计算/vn ,/wd 还/d 具有/v 存储/vn 记忆/n 功能/n 。/wj 计算机/n 有/vyou 超级/b 计算机/n 、/wn 工业/n 控制/vn 计算机/n 、/wn 网络/n 计算机/n 、/wn 个人/n 计算机/n 、/wn 嵌入/v 式/k 计算机/n ,/wd 较/d 先进/a 的/ude1 计算机/n 有/vyou 光子/n 计算机/n 、/wn 量子/n 计算机/n 。/wj "; 
            MatchCollection ms = Regex.Matches(s, @"(\w*?)(?=/.?n.?)");
            foreach (Match m in Regex.Matches(s,@"\w+(?=/v?ng?)"))
            {
                Console.WriteLine(m.Value);
            }
sunny906 2014-08-08
  • 打赏
  • 举报
回复

            string s = @"计算机/n (/wkz computer/n )/wky 俗称/v 电脑/n ,/wd 是/vshi 一/m 种/q 用于/v 高速/b 计算/vn 的/ude1 电子/n 计算机/n 器/ng ,/wd 可以/v 进行/vx 数值/n 计算/vn ,/wd 又/d 可以/v 进行/vx 逻辑/n 计算/vn ,/wd 还/d 具有/v 存储/vn 记忆/n 功能/n 。/wj 计算机/n 有/vyou 超级/b 计算机/n 、/wn 工业/n 控制/vn 计算机/n 、/wn 网络/n 计算机/n 、/wn 个人/n 计算机/n 、/wn 嵌入/v 式/k 计算机/n ,/wd 较/d 先进/a 的/ude1 计算机/n 有/vyou 光子/n 计算机/n 、/wn 量子/n 计算机/n 。/wj "; 
            MatchCollection ms = Regex.Matches(s, @"(\w*?)(?=/.?n.?)");
            foreach (Match m in ms)
            {
                Console.WriteLine(m.Groups[1].Value);
            }
我叫小菜菜 2014-08-07
  • 打赏
  • 举报
回复
进来学习的。。正则表达式真心强大,可惜一直没有空花时间认真学下
jshi123 2014-08-07
  • 打赏
  • 举报
回复
var words = Regex.Split("计算机/n (/wkz computer/n )/wky 俗称/v 电脑/n ...", @"/(\w+)\s"); var results = words.Where((x,i) => i%2 == 0 && i<words.Length-1 && new[] {"n","vn", "ng"}.Contains(words[i+1]));
Mo_DeNo 2014-08-07
  • 打赏
  • 举报
回复
进来学习啊,不是很懂正则
一只茶叶 2014-08-07
  • 打赏
  • 举报
回复
楼上正解~~~~

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧