首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何匹配此模式和字符串中的最后一个空格?

如何匹配此模式和字符串中的最后一个空格?
EN

Stack Overflow用户
提问于 2021-04-23 03:43:13
回答 3查看 519关注 0票数 3
代码语言:javascript
代码运行次数:0
运行
复制
s = "DL666 DL777 DL888 这波值不值你下载"

我想匹配从最后一个空格开始的字符,所以匹配应该是:

代码语言:javascript
代码运行次数:0
运行
复制
m = "这波值不值你下载"

我写了这个模式,但没有用:

代码语言:javascript
代码运行次数:0
运行
复制
p = '\s.+?$'

我还以为呢?是为了不贪婪的搜索。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-04-23 03:47:29

如果您坚持为此使用regex,我只会贪婪地搜索“任何后面的空格”,然后使用一个捕获组来获取之后的所有内容。

代码语言:javascript
代码运行次数:0
运行
复制
import re

s = "DL666 DL777 DL888 这波值不值你下载"
m = re.match(r'^.*\s(.*)$', s).group(1)
# '这波值不值你下载'

一个更简单的正则表达式,如果您对不从行的开头开始感到满意的话,将是

代码语言:javascript
代码运行次数:0
运行
复制
m = re.search('[^\s]*$', s).group(0)
# '这波值不值你下载'

然而,对于这么简单的事情,您最好只使用str.rindex()来查找空间的最后一次出现,然后将所有内容都放在后面。

代码语言:javascript
代码运行次数:0
运行
复制
m = s[s.rindex(' ') + 1:]
# '这波值不值你下载'
票数 1
EN

Stack Overflow用户

发布于 2021-04-23 03:55:06

它不能工作的原因是因为它试图从左到右找到一个匹配的。

regex \s.+?$的意思是:

  • 匹配一个空白\s
  • 后面跟着任意数字+?,任何字符的.
  • 直到到达行(或字符串) $的末尾为止

$?之后使?变得无用。

这就是为什么在字符串中的第一个空格之后匹配所有内容的原因。DL777 DL888 这波值不值你下载 演示

另一方面,如果您将.更改为除空白(\S)以外的任何内容,您就会得到所需的东西。当你在做它的时候,你最好移除?。而且,由于您不关心非空白之前的空白,所以也要去掉\s\S+$匹配这波值不值你下载 演示

注意,虽然这个正则表达式有效,但是在回答这个问题时只使用str.rindex()并像GCG建议一样分割字符串比较便宜。

票数 4
EN

Stack Overflow用户

发布于 2021-04-23 04:29:03

您也可以在vim中用作搜索字符串的一个更简单的正则表达式是:

代码语言:javascript
代码运行次数:0
运行
复制
\S\+$

它匹配行尾之前的每个非空格(或者字符串,如果是python)。请注意,您必须在vim中转义+

下面是python脚本:

代码语言:javascript
代码运行次数:0
运行
复制
import re
s = "DL666 DL777 DL888 这波值不值你下载"
m = re.search(r'\S+$', s)
print(m.group(0))

我在python3中测试了它:

代码语言:javascript
代码运行次数:0
运行
复制
$ python3
Python 3.6.8 (default, Mar  9 2021, 15:08:44) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-44.0.3)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import re
>>> s = "DL666 DL777 DL888 这波值不值你下载"
>>> m = re.search(r'\S+$', s)
>>> print(m.group(0))
这波值不值你下载
>>>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67223717

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档