【问题标题】:RegEx, Exclude All Whitespace Except Space正则表达式,排除除空格外的所有空格
【发布时间】:2020-06-19 14:24:16
【问题描述】:

我有一个简单的正则表达式,用于匹配所有非空白字符

([^\s])

这很好,但唯一的问题是它与有效的空白(在我的情况下有效)不匹配,这只是一个常规空格

如何为常规空间添加例外情况?匹配所有非空白字符,但也匹配空格

【问题讨论】:

  • [^\s] => [^\s ]
  • @WiktorStribiżew 我可能是错的,但这个评论看起来是用 \s 参数链接 Space ,其中包括 Space
  • 那么你需要[^\S ]\s 匹配更多 \t\n\r 和空格。
  • 如果我将它反转为 [\S ] 那么它可以工作,我不知道 \S arg 但它似乎匹配所有不是空间的东西,然后将空间链接到那个
  • 那就对了。 \S + 空格 => [\S ]

标签: regex


【解决方案1】:

您应该使用正则表达式 - [^\t\n\r\f\v]

即手动排除所有空格除了空格。

查看演示here

编辑:如 cmets 中所述,\s 不仅仅包含 \t\n\r。虽然\t\n\r 常见的,但这不是故事的结局,远非如此!我也将它们添加到了正则表达式中。

但是,感谢Wiktor,首选且更简单的答案应该是-[\S ]

这将包括 非空白字符空格。

查看演示here

【讨论】:

  • 哇,我觉得自己很愚蠢,我从来不知道你可以像这样指定制表符、换行符和回车符。这正是我需要的,非常感谢!
  • 我必须等待一段时间才能接受这个作为答案,但这解决了我的问题
  • 这个答案解决了我的问题,但如果您更新答案以包括 [\S ] 方法,那就太好了,我认为它可以帮助其他用户
  • @WiktorStribiżew 我认为应该是[\S ] 对吧?
  • @TheLovelySausage 更新了我的答案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-30
  • 1970-01-01
  • 2019-06-21
  • 2021-04-10
相关资源
最近更新 更多