Java 使用否定标记字符串
因此,我有以下问题: 我必须使用Java 使用否定标记字符串,java,regex,token,Java,Regex,Token,因此,我有以下问题: 我必须使用string.split()对字符串进行tokenize标记,标记的格式必须为07dddddddd,其中d是一个数字。我考虑使用以下正则表达式:^(07\\d{2}\\s\\d{3}\\d{3})并将其作为参数传递给String.split()。但出于某种原因,尽管我在该表单下有子字符串,但它输出整个初始字符串,并且不标记它 我最初认为它使用空字符串作为拆分器,因为空字符串确实匹配该正则表达式,但即使在我向正则表达式中添加了&(.)+以确保拆分器的长度不为0后,它
string.split()
对字符串进行tokenize
标记,标记的格式必须为07dddddddd
,其中d是一个数字。我考虑使用以下正则表达式:^(07\\d{2}\\s\\d{3}\\d{3})
并将其作为参数传递给String.split()。但出于某种原因,尽管我在该表单下有子字符串,但它输出整个初始字符串,并且不标记它
我最初认为它使用空字符串作为拆分器,因为空字符串确实匹配该正则表达式,但即使在我向正则表达式中添加了&(.)+
以确保拆分器的长度不为0后,它仍然输出整个初始字符串
我知道我可以使用模式
和匹配器来更快地解决它,但我必须使用String.split()。知道为什么会发生这种情况吗?一些提示
- 您的模式
^(07\d{2}\s\d{3}\d{3})
在最后两组数字之间缺少空格
- 返回整个字符串的原因是,首先从未找到此模式:没有拆分
- 如果在此模式上拆分(一旦修复),则生成的数组将是介于此模式之间的字符串(这些标记实际上已删除)
- 如果要使用此模式(一旦修复),则需要“全部匹配”而不是“拆分”。这看起来像是
arrayOfMatches=yourString.match(/pattern/g)代码>
- 如果要拆分,则需要使用标记之间存在的分隔符(该分隔符实际上可能只是将要跟随的
07
声明的零宽度位置)
进一步阅读
向我们展示示例输入和输出..是0712 345 679
一个标记,还是应该在空格上拆分为3个标记的输入?@AaronDigulla或在多行模式下的行开始处。我知道。正如我在缺少的空间中提到的,它还没有准备好进入黄金时段。:)