Java中如何按关键字拆分字符串

Java中如何按关键字拆分字符串,java,regex,split,matcher,Java,Regex,Split,Matcher,我需要分割一个输入,并根据我创建的关键字或分隔符列表将其放入列表中 我尝试过简单地用空格分割字符串,然后再进行处理,但问题是我的一些关键字中有空格,所以它们被分割,这会导致不希望的行为 // "Jr.", "III", "Sr", "pro se" are all keywords in my list String input = "Abraham Lincoln Jr. III Sr pro se"; String [] splitBySpace = input.split(" "); Li

我需要分割一个输入,并根据我创建的关键字或分隔符列表将其放入列表中

我尝试过简单地用空格分割字符串,然后再进行处理,但问题是我的一些关键字中有空格,所以它们被分割,这会导致不希望的行为

// "Jr.", "III", "Sr", "pro se" are all keywords in my list
String input = "Abraham Lincoln Jr. III Sr pro se";
String [] splitBySpace = input.split(" ");
List<String> separatedName = new ArrayList<>(Arrays.asList(splitBySpace);
/“Jr.”、“III”、“Sr”、“pro-se”都是我列表中的关键词
字符串输入=“小亚伯拉罕·林肯III Sr pro se”;
String[]splitBySpace=input.split(“”);
List separatedName=newarraylist(Arrays.asList(splitBySpace));
我的名单是:
{Abraham,Lincoln,Jr.,III,Sr,pro,se}
我希望它是:
{亚伯拉罕,林肯,小,三世,老,职业}

这个输出也会起作用:
{Abraham Lincoln,Jr.,III,Sr,pro-se}
(我不需要将不在分隔符列表中的字符串分开)

您可以使用这个:
\s(?=(Jr\.III | Sr | pro se))
-并添加您想要保留的关键字

下面是一个工作演示,以查看它与什么匹配:


因此,使用
String[]split=input.split(\\s(?=(Jr\\\.|III | Sr | pro se));
您应该会得到所需的结果。

您可以尝试在字符串中添加一个不同的seperator,该seperator包含关键字。而不是通过
将它们分开。
通过
将它们分开。


这样,您就不会对需要保留的空格产生任何问题。

split()
中使用正则表达式,并参见
/“Jr.,“III”,“Sr”,“pro-se”所有关键字都在我的列表中。
。你能显示你列表的内容吗?除非你提供问题的所有细节,否则你不能指望在这里得到帮助。我的分隔符列表很长,所以我可以在正则表达式中使用字符串变量,而不是在Jr\\\\\ III | Sr | pro se |中硬编码。当然,你可以。但它不是很漂亮,也不是很好用。如果它是one时间进程和性能并不重要,可能还可以。所以它看起来像:
String[]split=input.split(\\s(?=(regex))”;
但要做到这一点,您必须知道关键字在目标字符串中的位置。和以前一样,不是吗?
String input = "Abraham|Lincoln|Jr.|III|Sr|pro se";
String [] splitByPipe = input.split("\\|");