gpt4 book ai didi

java - 使用 REGEX 仅拆分特定单词

转载 作者:行者123 更新时间:2023-12-01 13:14:48 25 4
gpt4 key购买 nike

Vector<Object> ob = new Vector<Object>();
Pattern p= Pattern.compile("[A-Za-z]+|[0-9]|| |(Ted)|(Barry)");
Matcher m= p.matcher(s);

while(m.find()){
ob.add(m.group());
}

大家好,我试图让 REGEX 将所有单词和数字拆分为单独的标记,但我希望拆分某些复合词。

所以上面的代码我的问题是我想要

xrayTed

分割成

xrayTed

但它已经接受了整个 token 感谢您的宝贵时间

最佳答案

正则表达式是从左到右解释的,因此如果正则表达式引擎出现

regex1|regex2|regex3

将首先尝试查找 regex1 的匹配项,那么如果没有成功,则 regex2 ,最后regex3 (如果使用 regex2 未成功)。

所以在你的情况下xrayTed将匹配 [A-Za-z]+ 。如果你不想找到TedBarry具有更高优先级将其移至 [A-Za-z]+ 之前所以尝试使用

Pattern.compile("(Ted)|(Barry)|[A-Za-z]+|[0-9]|| ");

此外,在您的情况下,您将不得不中断匹配 [A-Za-z]+如果它尝试匹配 Ted 的第一个字母或Barry 。为此,您可以使用 negative-look-ahead机制如 ((?!Ted|Barry)[A-Za-z])+

所以尝试一下

Pattern.compile("(Ted)|(Barry)|((?!Ted|Barry)[A-Za-z])+|[0-9]|| ");

关于java - 使用 REGEX 仅拆分特定单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22557567/

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