首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用regex删除字符串中的数字

用regex删除字符串中的数字
EN

Stack Overflow用户
提问于 2015-12-28 05:46:59
回答 3查看 75关注 0票数 0

我有一根绳子:

151228-▶Guido's酒廊咖啡厅广播0124它将是好的(20140718)由吉多的酒廊咖啡厅

我想删除字符串中的数字-- "0124“和"20140718”,但在开始处的数字"151228“不受正则表达式的影响。我试过很多次了,但还是找不到一种只用一个表达式就能做到的方法。我所能做的就是:

151228--▶Guido's酒廊咖啡厅将在Guido's酒廊咖啡厅播放它将是好的)

由表达式:^\d+\d+

这几乎是一个成功,但"20140718“的括号也被删除了。

我不太擅长regex,而这条线只是对我自己的一个测试。我想知道是否有一个单一的表达式可以处理它,或者我是否必须做多次。有人能为我推荐一些关于regex的文章吗?我读过一些,但很多不是很详细。

我使用php,并通过preg_replace(regex、"“、"$str")进行一些替换工作。这里显示的字符串是随机选择的。所以不会有什么特殊的限制。实际上,我只是想删除字符串中的数字来测试我的正则表达式。然后我失败了..。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-12-28 06:20:15

似乎您总是希望保留第一个数字(“-▶”的左边),并删除所有其他数字。假设使用Python语言,您应该能够使用如下所示的负面展望:

代码语言:javascript
复制
print re.sub(r'\d+(?!.*-▶)', '', "151228-▶ Guido's Lounge Cafe Broadcast 0124 It Will Be Alright (20140718) by Guido's Lounge Café")

# output
# 151228-▶ Guido's Lounge Cafe Broadcast  It Will Be Alright () by Guido's Lounge Café

它的工作原理:它用一个空字符串替换任何一组数字,第一个组除外。第一组被定义为位于-▶字符序列的左侧。

编辑(在PHP中):

代码语言:javascript
复制
$output = preg_replace("/\d+(?!.*-)/", "", "151228- Guido's Lounge Cafe Broadcast 0124 It Will Be Alright (20140718) by Guido's Lounge Caf");

返回:

代码语言:javascript
复制
151228- Guido's Lounge Cafe Broadcast  It Will Be Alright () by Guido's Lounge Caf
票数 0
EN

Stack Overflow用户

发布于 2015-12-28 05:57:39

如果它总是有“广播”和“好”一词,那么您只需指定它:

代码语言:javascript
复制
toDelete = re.findall('Broadcast ([0-9]+)', line)
toDelete2 = re.findall('Alright ([(0-9)]+)', line)

这应该会提取出这些数字,然后您可以使用特定的数据创建一个函数,从行中删除toDelete中的任何内容。(所谓“行”,我指的是你想要删除的字符串所在的行),我会写它,但不知道你使用的是哪种语言。

票数 1
EN

Stack Overflow用户

发布于 2015-12-28 06:35:08

对于多个regexes来说,这样做确实更好,但是这里有一个:

代码语言:javascript
复制
s/(\d+)([^0-9]+)\s+\d+([^(]+)[(]\d+[)]\s+(.+)$/$1$2$3$4/;

产出如下:

代码语言:javascript
复制
151228-▶ Guido's Lounge Cafe Broadcast It Will Be Alright by Guido's Lounge Café
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34488276

复制
相关文章

相似问题

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