我正在为OCPJP考试做准备,并且遇到了以下示例:
class Test {
public static void main(String args[]) {
String test = "I am preparing for OCPJP";
String[] tokens = test.split("\\S");
System.out.println(tokens.length);
}
}
这段代码显示为16。我期待的是类似no_of_characters +1的内容。有人可以解释一下,在这种情况下split()方法实际上是做什么的?我就是不明白…
它"\\S"
在正则表达式引擎中表示\S
非空白字符的每个字符上进行拆分。
因此,让我们尝试分割"x x"
非空白(\S
)。由于此正则表达式可以用一个字符进行匹配,因此可以对其进行迭代以标记拆分的位置(我们将使用竖线|
进行表示)。
'x'
一个非空白?是的,让我们标记一下| x
' '
一个非空白?不,所以我们保持原样'x'
非空白吗?是的,让我们标记一下| |
因此,作为结果,我们需要在开始和结束时拆分字符串,这最初会给我们结果数组
["", " ", ""]
^ ^ - here we split
但是由于删除了结尾的 空字符串 ,结果将是
[""," "] <- result
,""] <- removed trailing empty string
因此split返回["", " "]
仅包含两个元素的数组。
顺便说一句。要关闭删除最后一个空字符串的操作,您需要使用split(regex,limit)
limit的负值,例如split("\\S",-1)
。
现在回到您的示例。如果您有数据,则将每个
I am preparing for OCPJP
| || ||||||||| ||| |||||
意思是
""|" "|""|" "|""|""|""|""|""|""|""|""|" "|""|""|" "|""|""|""|""|""
所以这代表这个数组
[""," ",""," ","","","","","","","",""," ","",""," ","","","","",""]
但是由于""
删除了结尾的空字符串(如果它们的存在是由split引起的-
有关更多信息,请访问:混淆String.split的输出)
[""," ",""," ","","","","","","","",""," ","",""," ","","","","",""]
^^ ^^ ^^ ^^ ^^
您得到的结果数组仅包含以下部分:
[""," ",""," ","","","","","","","",""," ","",""," "]
正好是16个元素
问题内容: 我有一个字符串: 我想在所有运算符上拆分字符串,但将运算符包括在数组中,因此结果数组如下所示: 我目前有这个: 这非常接近,它给出: 我有什么办法使多个字符运算符像我希望的那样出现在数组中? 作为不那么重要的第二个问题,正则表达式中是否有办法从字母周围修剪空格? 问题答案: 这应该做。一切都很好地存储在中。
问题内容: 这个问题已经在这里有了答案 : 字符串替换方法不替换字符 (5个答案) 2年前关闭。 我正在尝试将所有特殊字符替换为“%”,例如: 我的正则表达式是: 在在线工具中*它可以正常运行,但在Java中 弦保持不变。 *我尝试过:http : //www.regexplanet.com/ http://regex101.com/和其他 问题答案: 字符串是不可变的。您忘了将新变量重新分配给:
问题内容: 我想检查一个字符串是否按顺序包含单词“ stores”,“ store”和“ product”,无论它们之间是什么。 我尝试使用;并且; 我是否需要显式声明一个正则表达式并将其传递给方法,还是完全不能传递正则表达式? 问题答案: String.contains 与字符串,句点一起使用。它不适用于正则表达式。它将检查指定的确切字符串是否出现在当前字符串中。 注意不检查单词边界。它只是检查
本文向大家介绍Java正则表达式提取字符的方法实例,包括了Java正则表达式提取字符的方法实例的使用技巧和注意事项,需要的朋友参考一下 正好遇到一个需求需要将字符串中特定的字符全部提取出来,这个如果是按常规的字符串处理的话非常的繁琐。于是想到用正则表达式来完成。项目需求是这样的:需要提取车牌号中最后一个数字,比如说:苏A7865提取5,苏A876X提取6 实现方法: 关于Matcher 中的几个方
我正在尝试使用python中的正则表达式。我构建了正则表达式,如下所示。我知道用于匹配搜索字符串的开头。我已使用包含多个的匹配模式构建框架,但我不确定将如何尝试匹配搜索字符串中的模式。 我预计会引发错误,关于无效的正则表达式,但它不会引发任何错误,也不会返回任何匹配项。 所以,我的问题是或是有效的正则表达式吗?
在以下URL中: null 也就是说,以上与: