gpt4 book ai didi

java - 在 java 中使用正则表达式围绕空格/标点符号拆分字符串时出现问题

转载 作者:行者123 更新时间:2023-11-30 09:33:14 25 4
gpt4 key购买 nike

基本上我有一堆大字符串,我想从中删除空格/标点符号/数字,我只想要单词。

这是我的代码:

String str = "hughes/conserdyne corp, unit <hughes capital corp> made bear stearns <bsc> exclusive investment banker develop market 2,188,933 financing design installation micro-utility systems municipalities. company systems self-contained electrical generating facilities alternate power sources, photovoltaic cells, replace public utility power sources.";
String[] arr = str.split("[\\p{P}\\s\\t\\n\\r<>\\d]");
for (int i = 0; i < arr.length; i++) {
if(arr[i] != null)
System.out.println(arr[i]);
}

这是我得到的输出:

hughes
conserdyne
corp

unit

lt
hughes
capital
corp

made
bear
stearns

lt
bsc

exclusive
investment
banker
develop
market










financing
design
installation
micro
utility
systems
municipalities

company
systems
self
contained
electrical
generating
facilities
alternate
power
sources

photovoltaic
cells

replace
public
utility
power
sources

如您所见,原来逗号和数字所在的位置出现了很多空白等。无论是否有打印条件,我都会得到这个。

但是,如果我将 arr 的所有内容连接成一个新字符串,然后使用正则表达式“\s+”拆分它,它就会工作并产生正确的输出。

那么我当前的正则表达式有什么问题?任何帮助将不胜感激。

最佳答案

你应该能够在正则表达式的末尾抛出一个 +:

 String[] arr = str.split("[\\p{P}\\s\\t\\n\\r<>\\d]");

收件人:

 String[] arr = str.split("[\\p{P}\\s\\t\\n\\r<>\\d]+");
// ^-- This guy

添加 + 意味着匹配 1 个或多个前面的元素,所以如果你在一行中有多个“中断字符”,它们将被视为单个分隔符,你不会在结果中获取空字符串。

关于java - 在 java 中使用正则表达式围绕空格/标点符号拆分字符串时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12289548/

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