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

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

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

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

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

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

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

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-04-22 19:47:29

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

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

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

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

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

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

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

Stack Overflow用户

发布于 2021-04-22 19:55:06

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

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

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

$?之后使?变得无用。

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

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

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

票数 4
EN

Stack Overflow用户

发布于 2021-04-22 20:29:03

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

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

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

下面是python脚本:

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

我在python3中测试了它:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ 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

复制
相关文章
字符串 模式匹配
本文介绍了什么是程序员的内功——算法以及其重要性。算法是程序的核心,它能够高效地解决问题。文章通过一些例子详细讲解了算法的概念和其具体实现,并探讨了算法对于程序员的职业发展以及日常生活中的影响。
静默虚空
2018/01/05
1.5K0
字符串 模式匹配
字符串匹配算法_字符串模式匹配算法
网络信息中充满大量的字符串,对信息的搜寻至关重要,因此子字符串查找(即字符串匹配)是使用频率非常高的操作:给定一段长度为N的文本和长度为M的模式字符串(N≥M),在文本中找到一个和模式串相匹配的子串。由这个问题可以延伸至统计模式串在文本中出现的次数、找出上下文(和该模式串相符的子字符串周围的文字)等更复杂的问题。
全栈程序员站长
2022/08/02
2.9K0
字符串匹配算法_字符串模式匹配算法
Swift中的模式匹配
Swift 作为一门现代语言,除去安全,快速等特性之外,还有个明显有别于其他语言的特性,就是巨量细致入微的语言特性。类似iOS API,初学者觉得繁杂,无从下手,但是熟悉之后,绝对能少写不少代码。
小刀c
2022/09/21
1.8K0
Rust中的模式匹配
在其它一些语言中,let x = 5 之类的语句,仅仅只是赋值语句。但是在rust中,可以换个角度理解,认为5这个值匹配到了x变量。如果觉得有些牵强,可以再来一个示例:
菩提树下的杨过
2021/11/30
1.8K0
Rust中的模式匹配
字符串匹配---BF算法--朴素的模式匹配算法
#include<iostream> using namespace std; #include<string> //BF int BF(string& a,string& b) { //求出a串的长度 int sizeA=a.length();//返回的是字符串中字符个数 //求出b串的长度 int sizeB = b.length(); //i指向A,j指向B子串 int i=0; int j=0; //b是子串,a while (i <=sizeA-1&&j<= sizeB-1)
大忽悠爱学习
2021/03/15
2.1K0
less中的匹配模式
首先来看如下的代码,一个 div 元素,分别设置了上下左右的宽度高度和颜色,然后在浏览器中打开发现四个不同的角都是一个小小的三角形如下
程序员 NEO
2023/09/29
2140
less中的匹配模式
Java正则匹配空格_js正则表达式匹配空格
针对tab键带来的多个空格问题,有时候我们针对带空格的一行数据要进行切割,如果有多个空格就会出现就会切割空格出现,我们想把空格都去掉,所以需要用到某些方法。
全栈程序员站长
2022/11/09
11.1K0
C#如何删除字符串中任何位置的空格?
你或许知道你能使用String.Trim()方法,去除字符串的头和尾的空格。不幸运的是,这个Trim方法不能去除字符串中间的C#空格。
高一峰
2020/09/22
11.8K0
C#如何删除字符串中任何位置的空格?
算法:字符串的KMP模式匹配
该文介绍了字符串匹配算法中的KMP算法和字符串匹配的应用场景。
s1mba
2018/01/03
1.7K0
算法:字符串的KMP模式匹配
C语言之计算字符串最后一个单词的长度,单词以空格隔开
//计算字符串最后一个单词的长度,单词以空格隔开。 #include<stdio.h> #include<string.h> #include<windows.h> int main() { char str[128]; gets(str); int count=0; int len=strlen(str); for(int i=(len-1);i>=0;i--) { if(str[i]!=' ') {
互联网金融打杂
2018/04/03
3.2K0
C语言之计算字符串最后一个单词的长度,单词以空格隔开
去掉多余的空格---输入一个字符串,字符串中可能包含多个连续的空格,请将多余的空格去掉,只留下一个空格。输入格式
输入一个字符串,字符串中可能包含多个连续的空格,请将多余的空格去掉,只留下一个空格。
莫浅子
2022/11/18
2.7K0
[785]python去掉字符串中多余的空格
参考:https://www.jianshu.com/p/25def1847697 https://blog.csdn.net/baidu_15113429/article/details/80651091
周小董
2020/04/21
1.5K0
字符串匹配(多模式匹配篇)「建议收藏」
又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。
全栈程序员站长
2022/09/24
1.9K0
字符串匹配(多模式匹配篇)「建议收藏」
字符串模式匹配趣味算法
文本是我们接触最多的一种数据格式了。随着互联网生产的UGC(user gernerate content)越来越多,对文本的处理需求也越来越多。 闲话少说,我们来看下字符串的文本匹配都有哪些有趣的算法。
玄姐谈AGI
2019/11/06
9750
字符串模式匹配趣味算法
Python_去除字符串中的空格
01. strip() 方法 strip() :用于移除字符串头尾指定的字符(默认为空格)或字符序列。 注: 该方法只能删除开头或结尾的字符,不能删除中间部分的字符。 old_data = " a b c d 1 1 3 1 " new_data = old_data.strip() old_data2 = "com.123fa.comsfasf.comasdfrs324.com" new_data2 = old_data2.strip(".com") print(new_data) print(new
用户7741497
2022/03/24
1.8K0
Excel公式技巧62:查找第一个和最后一个匹配的数据
在使用VLOOKUP函数查找数据时,如果多于一个匹配值,如何获取第一个匹配的值或者最后一个匹配的值。这取决于两个因素:是执行精确匹配查找还是近似匹配查找;数据是否排序。
fanjy
2020/11/06
10.5K0
算法基础-字符串与模式匹配
在计算机中,串的最广泛的用处是字符串,因此一般情况下,串和字符串是等价的,字符串也简称为串,串就是字符串
DearXuan
2022/02/21
8290
Oracle中的NULL、’’(空字符串)以及’_’(空格)
在Oracle中使用 null,''(空字符串),'_'(空格)时,有没有遇到问题?产生疑惑?
全栈程序员站长
2022/07/05
3.4K0
Python3.10中的模式匹配
Python 3.10 版本还在开发之中,目前释出的 dev 版本实现了新语法特性 Structural Pattern Matching(PEP 634):可以利用match语句和case语句匹配对象的不同 模式,并应用不同的行为。
杜逸先
2021/06/09
1.5K0
Python中匹配模糊的字符串
如何使用thefuzz 库,它允许我们在python中进行模糊字符串匹配。此外,我们将学习如何使用process 模块,该模块允许我们在模糊字符串逻辑的帮助下有效地匹配或提取字符串。
Python学习者
2023/10/09
5540

相似问题

匹配带空格和不带空格的模式

12

如何匹配此模式?

124

R Regex:第一个空格和最后一个空格之间的匹配字符串

20

如何在Regex模式中匹配此字符串?

13

如何在Python中匹配和替换此模式?

30
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文