gpt4 book ai didi

java - 使用否定对字符串进行标记

转载 作者:行者123 更新时间:2023-12-01 12:43:22 24 4
gpt4 key购买 nike

所以我有以下问题:我必须使用 String.split() 对字符串进行标记化,并且标记必须采用 07dd ddd ddd 形式,其中 d 是数字。我想使用以下正则表达式: ^(07\\d{2}\\s\\d{3}\\d{3}) 并将其作为参数传递给 String.split ()。但由于某种原因,虽然我确实有该形式下的子字符串,但它输出整个初始字符串并且不会对其进行标记。

我最初认为它使用空字符串作为拆分器,因为空字符串确实与该正则表达式匹配,但即使在我将 & (.)+ 添加到正则表达式以确保拆分器的长度不是 0,它仍然输出整个初始字符串。

我知道我可以使用Pattern'sMatchers来更快地解决它,但我必须使用String.split()。有什么想法为什么会发生这种情况吗?

最佳答案

一些提示

  • 您的模式 ^(07\d{2}\s\d{3}\d{3})最后两组数字之间缺少空格
  • 你得到整个字符串的原因是这个模式从来没有被发现:没有分割
  • 如果您按照此模式进行拆分(一旦固定),生成的数组将是此模式中间的字符串(这些标记实际上已被删除)
  • 如果您想使用此模式(一旦固定),您需要“全部匹配”而不是“拆分”。这看起来像 arrayOfMatches = yourString.match(/pattern/g);
  • 如果要拆分,则需要使用 token 之间存在的分隔符(该分隔符实际上可能只是后面的 07 断言的零宽度位置)

进一步阅读

Match All and Split are Two Sides of the Same Coin

关于java - 使用否定对字符串进行标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24887691/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com