我有一个解析问题。 我有存储为字符串的句子。我想捕获每个句子中的每个单词,但是我想过滤我捕获的单词。例如说我有一个像下面这样的句子:
Hell0 3v3ryb0dy @ stackoverflow $people \implies queen$ equals ~queen --> ~people. /#logic
我会做以下事情:
- 捕获“H3ll0”
- 捕获 3v3ryb0dy
- 丢掉@
- 从“$people”中获取“people”
- 从 '\implies' 中获取 'implies'
- 从'queen$'中获取'queen'
- 捕获“等于”
- 从'~queen'中获取'queen'
- 扔掉 -->
- 从“~people”中抓取“people”
- 从“/#logic”中获取“逻辑”
基本上我只需要字母数字字符,每当我在单词前后有一些其他字符(例如\)时,我想忽略这个其他字符。
目前我在做:sentence.split("")
这会从句子中获取单个单词,但它会获取“$people”和“~people”,并在我希望它们受到相同对待时以不同方式对待它们。
- 我怎样才能做到这一点?
- 正则表达式对我有帮助吗?
最佳答案
使用此正则表达式 \\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]
关于带有正则表达式的 Java String.split(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13225175/