实用编程小技巧:Java语言如何从一段文字中取出所有英文单词

有些时候我们会有一个需求,就是从一段中英文混合的文本中把所有的英文单词统计出来,例如如下的一段话:

2.精通spring boot,spring cloud,struts2等框架,有微服务,微应用的开发与实施经验;3.对大数据有一定的了解,熟悉j2ee、hadoop、kafka、spark、elasticsearch,hbase等大数据相关技术及框架;4.熟悉oracle,postgresql,mysql,redis等数据库相关技术;5.熟悉Vue、Webpack、Node.js、ElementUI、Jqurey、Ajax、json、git/svn等,有一定的Vue前端开发项目经验;

在这段话里,如果我们需要把其中所有的英文单词统计出来,从而来统计一下各种技术的出现频率的话,应该怎么做呢?

很显然,这种情况最容易的方法应该就是神器正则表达式了。

正则表达式无疑是解决这类问题最简单的方法了。那么我们来看一看,如果用正则表达式的话,这个问题应该怎么解决。

首先我们注意到,有些技术的名字中间是有空格的,类似于spring boot、spring cloud等,这种情况我们显然不能把它们分成两个单词。另外还有一些是中间或末尾带数字的。另外还有一个Node.js是中间带句点的。

考虑到这些情况之后,我们可以写出一种能够匹配以上所有技术名称的正则表达式了,如下所示:

[A-Za-z][A-Za-z0-9_\s\.]*[A-Za-z0-9_]*

最终,我们的代码如下:

HashMapresult =newHashMap

String data = “2.精通spring boot,spring cloud,struts2等框架,”

+ “有微服务,微应用的开发与实施经验;3.对大数据有一定的了解,”

+ “熟悉j2ee、hadoop、kafka、spark、elasticsearch,”

+ “hbase等大数据相关技术及框架;4.熟悉oracle,postgresql,”

+ “mysql,redis等数据库相关技术;5.熟悉Vue、Webpack、”

+ “Node.js、ElementUI、Jqurey、Ajax、json、git、svn等,”

+ “有一定的Vue前端开发项目经验;”;

String regex = “[A-Za-z][A-Za-z0-9_\s\.]*[A-Za-z0-9_]*”;

Pattern pattern = Pattern.compile(regex);

Matcher matcher = pattern.matcher(data);

System.out.println(“Words in the given String: “);

while(matcher.find()) {

if(result.get(matcher.group()) !=null)

result.put(matcher.group(), result.get(matcher.group()) + 1);

else

result.put(matcher.group(), 1);

System.out.println(result);

输出结果如下:

Words in the given String:

{oracle=1, spring cloud=1, Vue=2, Node.js=1, svn=1, Jqurey=1, redis=1, spring boot=1, struts2=1, git=1, elasticsearch=1, postgresql=1, spark=1, kafka=1, j2ee=1, ElementUI=1, json=1, mysql=1, hadoop=1, Webpack=1, hbase=1, Ajax=1}

可见,该正则表达式完整地输出了所有的技术名称。不过这个正则表达式并不简洁,如果读者们有更简洁的表达方式的话,欢迎私信或留言哦。

喜欢本文的话,欢迎关注活在信息时代哦:)

实用编程小技巧:Java语言如何从一段文字中取出所有英文单词插图1

原创文章 实用编程小技巧:Java语言如何从一段文字中取出所有英文单词,版权所有
如若转载,请注明出处:https://www.itxiaozhan.cn/202211138.html

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注