Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.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 如何获取发生在两个字符之间的所有子字符串?_Java_Regex_String - Fatal编程技术网

Java 如何获取发生在两个字符之间的所有子字符串?

Java 如何获取发生在两个字符之间的所有子字符串?,java,regex,string,Java,Regex,String,如果我想沿着一个字符串拉取两个字符(常规)之间的所有子字符串,我会怎么做? 我还想保留匹配的第一个字符,但不保留第二个字符 例如,如果我想将字符保留在一个字符和下一个空格或下一个字符之间(在本例中,又是一个字符,但可以是任何字符),我有一个字符串,说:“你好,我很冷#像一个坏蛋,但像#forreal” 比如说,我怎样才能得到一套[#令人毛骨悚然,#像个恶棍,#真实的] 我遇到了困难,因为出现了“任择/或结束”子字符串的情况-我希望子字符串以开头,并在第一次出现另一个或空白之前结束(如果两者都找不

如果我想沿着一个字符串拉取两个字符(常规)之间的所有子字符串,我会怎么做? 我还想保留匹配的第一个字符,但不保留第二个字符

例如,如果我想将字符保留在一个
字符和下一个空格或下一个字符之间(在本例中,
又是一个字符,但可以是任何字符),我有一个字符串,说:
“你好,我很冷#像一个坏蛋,但像#forreal”

比如说,我怎样才能得到一套
[#令人毛骨悚然,#像个恶棍,#真实的]

我遇到了困难,因为出现了“任择/或结束”子字符串的情况-我希望子字符串以
开头,并在第一次出现另一个
或空白之前结束(如果两者都找不到,则以字符串结尾)

在sudocode中放入最简单的代码:

for every String W between [char A, either (char B || char C)) // notice [A,B) - want the 
                                                               //first to be inclusive
   Set.add(W);
publicstaticvoidmain(字符串[]args)引发异常{
String s1=“你好,我#冷#像个恶棍但像#真的”;
字符串[]strArr=s1.split(“\\\\”);
List strOutputArr=new ArrayList();
int i=0;
用于(字符串str:strArray){
如果(i>0){
strOutputArray.add(“#”+str.split(“\\s+”)[0]);
}
i++;
}
System.out.println(strOutputArray.toString());
}
这个正则表达式似乎可以满足您的需要。它将查找
#
及其后面的所有字母数字字符。因为空格不是
\\w
的一部分,所以它不会包含在您的匹配中

String s = "hello i'm #chilling#likeAVillain but like #forreal";
Pattern p = Pattern.compile("#\\w+");
Matcher m = p.matcher(s);
while (m.find())
    System.out.println(m.group());
输出:

#chilling
#likeAVillain
#forreal

#forreal
不在
#
之间。为什么会出现在你的结果中?为什么你不问问你是如何从tweet中获得标签标记的?标签是我所能做的最好的比较,我需要的并不一定是它和Pshemo-抱歉,我猜第三个终止条款将是字符串的结尾,它不会删除“#”s吗?哦。。添加了“#”到它。你为什么逃避
#
?在这篇文章和你的预编辑文章之间,我想我得到了我需要的-谢谢@gadu如果我以前的版本是您需要的,那么您应该在正则表达式中包含转义机制,以防您希望使用正则表达式元字符,如
$
^
*
,等等。要生成简单的文字,您可以用
“\\Q”+yourCharacter+“\\E”
包围它们
\Q
\E
将使它们之间的每个字符都成为文字。
#chilling
#likeAVillain
#forreal