不允许空格作为最后字符

1 投票
4 回答
1676 浏览
提问于 2025-04-18 15:46

我有一个Python的正则表达式:[A-Za-z0-9_\s]+

我想知道怎么设置它,让它可以包含空格,但不允许空格出现在最后一个字符的位置。

给定这个字符串:

"Monthly Report Aug 27th 2013 - New York"

我希望它能匹配:

"Monthly Report Aug 27th 2013"

而不是:

"Monthly Report Aug 27th 2013 "

4 个回答

0

你可以使用这个正则表达式

([\w\s]+)\s

这是一个有效的示例

MATCH 1
1.  [0-28]  `Monthly Report Aug 27th 2013`
0

试试这样的写法:[A-Za-z0-9_\s]+[A-Za-z0-9_]。你只需要在这个规则的最后加一个不匹配空格的字符。

1

Python支持一种叫做“非空白字符”的通配符:\S(大写的通配符通常表示与小写相反的意思)。所以你可以使用类似这样的东西:

r'[A-Za-z0-9_\s]+\S$'
3

我会这样写:

[A-Za-z0-9_]+(?:\s+[A-Za-z0-9_]+)*

注意:如果你不使用 re.LOCALEre.UNICODE 选项,那么这个模式可以简化为:

\w+(?:\s+\w+)*

撰写回答