首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >句子以<sup></sup>拆分

句子以<sup></sup>拆分
EN

Stack Overflow用户
提问于 2016-04-16 22:28:50
回答 2查看 111关注 0票数 0

我有这样一句话:

代码语言:javascript
复制
String str = " And God said, <sup>c</sup>&#8220;Let there be light,&#8221; and there was light.";

我如何检索句子中的所有单词,期待下面的内容?

代码语言:javascript
复制
And
God
said
Let 
there
be
light
and 
there
was
light
EN

回答 2

Stack Overflow用户

发布于 2016-04-16 22:53:53

首先,去掉任何前导或尾随空格:

代码语言:javascript
复制
.trim()

然后去掉HTML实体(&...;):

代码语言:javascript
复制
.replaceAll("&.*?;", "")

&;是正则表达式中的文字字符,.*?是“任意字符、任意次数”的非贪婪版本。

接下来,去掉标签和它们的内容:

代码语言:javascript
复制
.replaceAll("<(.*?)>.*?</\\1>", "")

<>将再次从字面上理解,上面解释了.*?(...)定义了捕获组,\\1引用了该组。

最后,对任意非字母序列进行拆分:

代码语言:javascript
复制
.split("[^a-zA-Z]+")

[a-zA-Z]表示从azAZ的所有字符,^表示反转匹配,+表示“一次或多次”。

所以所有东西加在一起就是:

代码语言:javascript
复制
String words = str.trim().replaceAll("&.*?;", "").replaceAll("<(.*?)>.*?</\\1>", "").split("[^a-zA-Z]+");

请注意,这不像<img src="a.png" />那样处理自动结束标记。

还要注意的是,如果你需要完整的超文本标记语言解析,你应该考虑让一个真正的引擎来解析它,比如parsing HTML with Regex is a bad idea

票数 1
EN

Stack Overflow用户

发布于 2016-04-16 22:57:14

您可以将String.replaceAll(正则表达式,替换)与正则表达式^A-Za-z+一起使用,这样只获取字符。这也将包括sup标记和c。这就是为什么您要用第一个语句替换标记以及它们之间的所有内容。

代码语言:javascript
复制
    String str = " And God said, <sup>c</sup>&#8220;Let there be light,&#8221; and there was light.".replaceAll("<sup>[^<]</sup>", "");
    String newstr = str.replaceAll("[^A-Za-z]+", " ");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36665402

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档