我有一个解析问题。 我有句子存储为字符串。我想抓住每个句子中的每个单词但是我想过滤掉我抓住的单词。例如,假设我有一个如下句子:
地狱0 3v3ryb0dy @ stackoverflow $ people \暗示女王$等于〜皇后 - > 〜人。 /#逻辑
我会做以下事情:
基本上我只想要字母数字字符,每当我想要一个单词之前或之后有一些其他字符如\时我想忽略这个其他字符。
目前我在做:sentence.split(" ")
这可以从句子中获取单词,但是当我希望它们被视为同样时,它会抓住'$ people'和'〜people'并以不同的方式对待它们。
答案 0 :(得分:4)
使用此正则表达式\\W+
拆分字符串,将其拆分为一个或多个非单词字符。
String sentence = "Hell0 3v3ryb0dy @ stackoverflow $people \\implies queen$ equals ~queen --> ~people. /#logic";
String[] split = sentence.split("\\W+");
System.out.println(Arrays.asList(split));
<强>输出强>
[Hell0,3v3ryb0dy,stackoverflow,people,implies,queen,equals,queen,people,logic]
答案 1 :(得分:1)
我正在使用这个正则表达式
[^A-Za-z0-9 ]+
(已编辑)
我得到的输出是:
Hell0 3v3ryb0dy stackoverflow people implies queen equals queen people logic
这是你期待的吗?
import java.util.regex.Pattern;
import java.util.regex.Matcher;
class Module1{
public static void main(String[] asd){
String sourcestring = "source string to match with pattern";
Pattern re = Pattern.compile("[^A-Za-z0-9 ]+",Pattern.CASE_INSENSITIVE);
Matcher m = re.matcher(sourcestring);
String result = m.replaceAll("");
}
}
$sourcestring after replacement:
Hell0 3v3ryb0dy stackoverflow people implies queen equals queen people logic