在Java中使用正则表达式将字符串拆分为令牌并仅返回一个令牌

在Java中使用正则表达式将字符串拆分为令牌并仅返回一个令牌,java,regex,string,Java,Regex,String,使用Java的split string方法,我知道可以通过分隔符将字符串拆分为标记,但是有没有一种方法可以使用regex只返回一个特定的标记 例如,如果我有以下字符串:“item1 | item2 | item3 | item4” 有没有办法构造一个正则表达式来返回令牌1(item1)或令牌4(item4) 我知道它可以在多行代码中完成,但我想知道 特别是如果它只能使用正则表达式来完成 进一步解释 我不相信我已经准确地解释了我的问题,所以我将扩展此信息 文本来自数据库,包含参考数据。程序员不知道

使用Java的split string方法,我知道可以通过分隔符将字符串拆分为标记,但是有没有一种方法可以使用regex只返回一个特定的标记

例如,如果我有以下字符串:“item1 | item2 | item3 | item4” 有没有办法构造一个正则表达式来返回令牌1(item1)或令牌4(item4)

我知道它可以在多行代码中完成,但我想知道 特别是如果它只能使用正则表达式来完成

进一步解释 我不相信我已经准确地解释了我的问题,所以我将扩展此信息

文本来自数据库,包含参考数据。程序员不知道这个数据有多长,或者它可能包含多少令牌。 例如,数据可能包含以下内容:

ENGLAND|44|ENG|EN
程序员需要调用一个方法,该方法从这个列表中获取特定的解码。例如,他们可能想要解码1(英国),他们可能想要解码4(英国)
我想要一个正则表达式解决方案,它可以返回任何令牌(如果它存在的话)。单独的正则表达式并不能解决这个问题,因为我们不知道列表中可能有多少个解码。(理论上可能有数百个)我想知道是否有一种简单的方法,我们可以告诉regex拆分成令牌,然后给我令牌X,而不拆分成数组,然后返回数组元素X。

给定字符串item1 | item2 | item3 | item4

  • 项目1

split
调用将返回一个数组。你可以在你选择的索引中选择元素。如果可以只使用正则表达式来完成,那么你确实可以创建一个只匹配特定项的
regex
,但是正如Mena所说的,这是我知道如何访问数组的最好方法,我的问题是不使用数组。我想知道您是否可以在正则表达式中指定只返回指定的标记。@XtremeBaumer“您确实可以创建一个只匹配特定项的正则表达式”我的问题是如何做到这一点。我不知道正则表达式怎么做。谢谢,但这并不能完全回答我的问题。(我知道我的问题没有完全解释清楚,因为我必须完全理解我的需求。)-当要拆分的字符串包含0时,我需要按数字返回特定的标记,1个或多个标记。你能用最少的示例更准确地解释你想做什么:输入和预期输出吗?我已经用其他信息编辑了我的原始问题。 ^[^|]* [^|]*$ (?<=\|)[^|]*(?=(?:\|[^|]*){2}$)
    String str = "item1|item2|item3|item4";
    Pattern p = Pattern.compile( "(?<=\\|)[^|]*(?=(?:\\|[^|]*){2}$)" );
    Matcher m = p.matcher( str );
    if (m.find()) {
        System.out.println( m.group() );
    }