Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.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 Can';t获取字符串拆分中的正则表达式示例_Java_Regex_String - Fatal编程技术网

Java Can';t获取字符串拆分中的正则表达式示例

Java Can';t获取字符串拆分中的正则表达式示例,java,regex,string,Java,Regex,String,我无法从以下方面获得这些示例: 例如,对于“boo:and:foo” 我无法理解结果。 我了解到,对于负极限,模式应用的次数尽可能多,对于正极限,模式应用的次数为n-1次,等等 但我不明白在每种情况下,结果数组是如何形成的 例如,在第一种情况下,为什么我们在位置1中有1“”,但在位置3和4中有2“”? 其余的也一样 有什么帮助吗?让我们从了解所有可能的拆分开始。我认为“b”和:和:f”是清楚的 空字符串来自于在o之间拆分(fo-“”-o,bo-“”-o),并在最后一个o-之后拆分,直到字符串的结

我无法从以下方面获得这些示例:

例如,对于
“boo:and:foo”

我无法理解结果。
我了解到,对于负极限,模式应用的次数尽可能多,对于正极限,模式应用的次数为n-1次,等等

但我不明白在每种情况下,结果数组是如何形成的

例如,在第一种情况下,为什么我们在位置
1
中有1“”,但在位置
3
4
中有2“”?
其余的也一样


有什么帮助吗?

让我们从了解所有可能的拆分开始。我认为
“b”
:和:f”
是清楚的

空字符串来自于在
o
之间拆分(
fo-“”-o
bo-“”-o
),并在最后一个o-之后拆分,直到字符串的结尾,这也是一个空字符串

所以我们有5个匹配的字符串,拆分可以返回

如果我们使用5-进行拆分,我们最多返回5个子字符串,whcih正好是我们拥有的5个子字符串,从而得到第一个输出:

如果极限n大于零,则将应用该模式 最多n-1次,数组的长度将不大于n,并且 数组的最后一个条目将包含最后一个匹配项之外的所有输入 分隔符

如果使用-2进行拆分,则返回尽可能多的值[在本例中与5相同]:

如果n为非正,则该模式将应用尽可能多的次数 可能,数组可以有任意长度

如果我们使用0进行拆分,我们将返回尽可能多的值-但我们会丢弃所有尾随的空字符串:

如果n为零,则该模式将应用尽可能多的次数 可能的话,数组可以有任何长度,尾随空字符串 将被丢弃

注意:如果要忽略
o
发生之间的空字符串,应使用regex
“o+”
-进行拆分,这将尽可能多地占用
o
,从而导致
o
之间没有空字符串

直截了当

步骤1:处理boo:and:foo

"b"  and  "o:and:foo"
"" and ":and:foo"
":and:f" and "o"
""  and ""
步骤2:处理o:and:foo

"b"  and  "o:and:foo"
"" and ":and:foo"
":and:f" and "o"
""  and ""
步骤3:处理:和:foo

"b"  and  "o:and:foo"
"" and ":and:foo"
":and:f" and "o"
""  and ""
步骤4:处理o

"b"  and  "o:and:foo"
"" and ":and:foo"
":and:f" and "o"
""  and ""
案例2:它是负极限,因此它尝试尽可能多地应用“o”模式。因此同上。之后,我们剩下两个空字符串,没有更多的拆分应用


案例3:0,与案例2相同,但它会丢弃尾随的空字符串。因此,它会丢弃最后两个字符串

为什么在步骤2中它是
”:和:foo“
”,而不是普通的
”:和:foo“
?它是一个拆分,始终会创建两个字符串。如果没有任何内容,将创建一个空字符串。所以,如果你把一个刺劈开,说“A”,你必须总是空字符串。(观察:<代码> String。Stult有非常奇怪的行为。)我个人的偏好是:“吉姆,请考虑接受,如果这回答了你的问题。”谢谢,祝你好运。