【问题标题】:Python regex for matching two or three white spaces用于匹配两个或三个空格的 Python 正则表达式
【发布时间】:2012-08-06 19:08:56
【问题描述】:

我正在尝试将以下文本与 Python 2.7 中的正则表达式匹配

SUBCASE   8
SUBCASE   9
SUBCASE  10
SUBCASE  11

“子大小写”和数字之间的空格数从 3 下降到 2。我正在尝试在 Python 中使用此正则表达式:

(SUBCASE)[\s+]([0-9]+)

我哪里错了? \s+ 不应该表示“捕获多个空格”吗?

【问题讨论】:

  • 为什么不简单的split
  • @Alexander 我有一个现有的函数(使用正则表达式)我想对此进行更改,所以我想保持相同的结构

标签: python regex string


【解决方案1】:

你会想要的:

SUBCASE\s+([0-9]+)

SUBCASE\s+(\d+)

\s+ 放在[...] 中意味着您需要一个符号,该符号要么是空白字符,要么是加号。

【讨论】:

  • 这似乎不起作用。当我手动将空格(2 或 3)添加到我的正则表达式时,它匹配得很好,但 \s+ 不起作用。我做错了什么?
  • 你输入的字符串是raw string吗?否则,您将不得不转义反斜杠。使用 r 前缀为您提供原始字符串文字:r'SUBCASE\s+(\d+)'
  • @prrao:您的正则表达式中还有一个多余的左括号:[(0-9]。将其更改为 [0-9]
  • @Sebastian 这两种方式都不起作用,即使我作为原始字符串输入
  • @prrao:对我来说效果很好。你可以在这里看到我的测试用例:ideone.com/EifKh
【解决方案2】:
(SUBCASE)\s+([0-9]+) 

您使用了 [\s+] 来匹配一个空格或 + 号的字符

【讨论】:

  • '+' 是正则表达式“一个或多个”运算符。他没有尝试匹配“+”字符。
猜你喜欢
  • 1970-01-01
  • 2021-06-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-05
  • 2017-10-01
  • 2011-04-21
相关资源
最近更新 更多