Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/152.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用正则表达式仅拆分特定单词 Vector ob=new Vector(); Pattern p=Pattern.compile(“[A-Za-z]+[0-9]| | | |(Ted)|(Barry)”); 匹配器m=匹配器p; while(m.find()){ ob.add(m.group()); }_Java_Regex - Fatal编程技术网

Java 使用正则表达式仅拆分特定单词 Vector ob=new Vector(); Pattern p=Pattern.compile(“[A-Za-z]+[0-9]| | | |(Ted)|(Barry)”); 匹配器m=匹配器p; while(m.find()){ ob.add(m.group()); }

Java 使用正则表达式仅拆分特定单词 Vector ob=new Vector(); Pattern p=Pattern.compile(“[A-Za-z]+[0-9]| | | |(Ted)|(Barry)”); 匹配器m=匹配器p; while(m.find()){ ob.add(m.group()); },java,regex,Java,Regex,大家好, 我试图让正则表达式将所有单词和数字拆分为单独的标记,但我希望某些复合词被拆分 对于上面的代码,我的问题是 x光检查 分成 x光和Ted 但它已经接受了全部代币 感谢您的时间正则表达式是从左到右解释的,因此如果正则表达式引擎 Vector<Object> ob = new Vector<Object>(); Pattern p= Pattern.compile("[A-Za-z]+|[0-9]|| |(Ted)|(Barry)");

大家好, 我试图让正则表达式将所有单词和数字拆分为单独的标记,但我希望某些复合词被拆分

对于上面的代码,我的问题是

x光检查

分成

x光
Ted

但它已经接受了全部代币
感谢您的时间

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

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());
        }
将首先尝试查找
regex1
的匹配项,如果未成功,则查找
regex2
,最后查找
regex3
(如果未成功,则查找
regex2

因此,在您的情况下,
x光
将与
[A-Za-z]+
匹配。如果您不想找到优先级更高的
Ted
Barry
将其移动到
[A-Za-z]+
之前,请尝试使用

regex1|regex2|regex3
Pattern.compile("(Ted)|(Barry)|[A-Za-z]+|[0-9]|| ");
同样,在您的情况下,如果要尝试匹配
Ted
Barry
的第一个字母,您必须中断匹配
[A-Za-z]+
。为此,您可以使用类似于
((!Ted|Barry)[A-Za-z])+

所以试试看

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

我认为此代码可以帮助您:

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

欢迎来到StackOverflow,祝贺您的第一个答案!别忘了确保你发布的代码将被编译(你忘记了一个
}
),并解释你的代码是做什么的!一个带有解释的答案比一个代码片段要有用得多:)谢谢你的帮助和建议:)
(Ted)|(Barry)|([a-Za-z](?!Ted | Barry))+|[0-9]| |“
似乎出于某种原因放弃了X光的y?看起来它为y存储了一个空令牌,所以它将其拆分为
xra Ted
@RobForan抱歉,我把
([A-Za-z](?!Ted|Barry))+
搞砸了。如果字符是
Ted
Barry
的第一个字符,而不是
Ted
Barry
之前的字符,则不接受字符应该是
((?!Ted | Barry)[A-Za-z])+
。我更新了我的答案。@RobForan让我知道这是否有用。