gpt4 book ai didi

java - 查找以哈希开头和结尾的句子

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:12:10 25 4
gpt4 key购买 nike

我正在研究检测以主题标签开头和结尾的句子。截至目前,我只有用于查找单词的代码,这是该机制的一部分。如何根据以下情况找到句子。

案例一:

Hello, #how are you# today. 

在这种情况下,我想检测你好吗。现在如果只有一个单词,那么上面的情况就可以忽略了。

案例二:

Hello, #how are you #today. 

在这种情况下,只找到单词 #how#today,我已经在处理这些单词。这里没有句子,因为单词不以标签结尾。

代码:

@Override
public List<String> findHashTags(String text){
if(text == null){
return new ArrayList<>();
}
String[] tagSet = text.split(" ");
Set<String> sortedTags = new HashSet<>();
List<String> processedTags = new ArrayList<>();
for(String tags : tagSet){
if(tags.startsWith("#")){
sortedTags.add(tags);
}
}
processedTags.addAll(sortedTags);
return processedTags;
}

更新代码

@Override
public List<String> findHashTags(String text){
if(text == null){
return new ArrayList<>();
}
Set<String> sortedTags = new HashSet<>();
List<String> processedTags = new ArrayList<>();
Pattern pattern = Pattern.compile("#\\b.*?\\b#|\\B#\\w+");
Matcher matcher = pattern.matcher(text);
while (matcher.find()){
String outString = matcher.group();
outString = outString.replace("#","");
outString = outString.replace(",","");
sortedTags.add(outString);
}
processedTags.addAll(sortedTags);

return processedTags;
}

最佳答案

您可以使用正则表达式来匹配 # 后跟一个单词 char 到第一个 # 以一个单词 char 开头的子字符串,或者匹配一个#,它前面没有一个单词字符,然后有任何 1+ 个单词字符。

#\b.*?\b#|\B#\w+

参见 regex demo

如果您想通过将第一个 \b 转换为 (?=\p{ L})/(?=[a-zA-Z]) 需要一个字母。

查看 Java demo :

List<String> results = new ArrayList<>();
String s = "Hello, #how are you# today. Hello, #how are you #today.";
Pattern pattern = Pattern.compile("#\\b.*?\\b#|\\B#\\w+");
Matcher matcher = pattern.matcher(s);
while (matcher.find()){
results.add(matcher.group());
}
System.out.println(results);
// => [#how are you#, #how, #today]

关于java - 查找以哈希开头和结尾的句子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49048943/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com