【问题标题】:Why `\t*` will not match zero or more tabs? [duplicate]为什么 `\t*` 不会匹配零个或多个标签? [复制]
【发布时间】:2016-04-30 09:01:22
【问题描述】:

如果您尝试使用http://regexr.com/ 正则表达式\t,您将获得所有单个选项卡。但是如果你尝试\t*,你只会得到第一行的开头。为什么?

【问题讨论】:

  • 使用/g 标志,您将匹配所有。当然你需要\t+ 虽然\t* 可以匹配一个空字符串,并且会匹配字符串中的每个位置。提示:使用 regex101.com 以获得更好的用户体验。
  • @WiktorStribiżew 我希望在我的正则表达式中间有零个或多个标签。但是\t* 不起作用...使用\t* * 有什么问题(零个或多个制表符,零个或多个空格)?
  • XY 问题?用您真正遇到的问题更新问题。
  • @WiktorStribiżew 实际上,我真正的问题已经解决了。我现在只想了解为什么\t* 只匹配第一行的开头,而\t 匹配所有文本选项卡。
  • 如果你在RegExr 上测试过这个,你一定看到了右边的鲜红色“无限”图标。这意味着您的正则表达式可以匹配零个字符,这显然在该站点上是不允许的。因此,损坏的是工具,而不是您的正则表达式。改为在 Regex101 上尝试一下,您会发现它几乎无处不在,而不仅仅是开始。

标签: regex


【解决方案1】:

如果您只使用\t*,那么您试图匹配没有,一个或多个标签。正则表达式中的任何内容都不会匹配任何内容,因此它不起作用。 如果您需要查找一个或多个选项卡,请改用\t+。 要使您的正则表达式适用于所有行,请使用global 设置。有一个例子:http://regexr.com/3db4i

【讨论】:

  • OP 在更长的模式中使用\t*。更改为 \t+ 可能不是真正需要的。
  • @WiktorStribiżew 这没有在问题中指定,我注意到你的评论很晚。您为什么不将其发布为答案?
  • @Harms 你对\t* 说“regexp 中的任何内容都不会匹配任何内容”,但它确实匹配第一行开头的选项卡。
  • @Harms “regexp 中的任何内容都不会匹配任何内容”,这是不正确的。什么都不会匹​​配。
  • @JAtwal:一个什么都不能匹配的正则表达式将在任何地方匹配;我相信这就是哈姆斯的意思。
猜你喜欢
  • 2013-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多