首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Ruby RegEx问题text.gsub[^\W-],'')失败

Ruby RegEx问题text.gsub[^\W-],'')失败
EN

Stack Overflow用户
提问于 2008-09-26 03:11:16
回答 5查看 8.9K关注 0票数 6

根据我在“Rails方式”中所读到的内容,我正在尝试学习Ruby中的RegEx。但是,就连这个简单的例子也让我感到困惑。我看不出是打错还是错了:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
text.gsub(/\s/, "-").gsub([^\W-], '').downcase

在我看来,这将用-替换所有空格,然后字符串以非字母或数字开头,后面跟着破折号,将其替换为'‘。但是,使用irb,它首先在^上失败。

语法错误,意外的“^”,期待“]”

如果我取出^,它在W上再次失效。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2008-09-26 03:14:32

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>> text = "I love spaces"
=> "I love spaces"
>> text.gsub(/\s/, "-").gsub(/[^\W-]/, '').downcase
=> "--"

失踪//

虽然这更有意义:-)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>> text.gsub(/\s/, "-").gsub(/([^\W-])/, '\1').downcase
=> "i-love-spaces"

这可能就是我们的意思

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>> text.gsub(/\s/, "-").gsub(/[^\w-]/, '').downcase
=> "i-love-spaces"

W的意思是“不是一个词”\W意味着“一个词”

//生成regexp对象

/^\W-/..class => Regexp

票数 9
EN

Stack Overflow用户

发布于 2008-09-26 16:09:03

步骤1:把这个添加到你的书签。每当我需要查找regexes时,这是我的第一站

第2步:让我们遍历您的代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
text.gsub(/\s/, "-")

您正在调用gsub函数,并为其提供2个参数。

第一个参数是/\s/,它是ruby,用于“创建包含\s的新regexp (regexes的// are类似特殊”)。

第二个参数是字符串"-"

因此,这将用连字符替换所有空白字符。到现在为止还好。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.gsub([^\W-], '').downcase

接下来,再次调用gsub,传递给它两个参数。第一个参数是[^\W-]。因为我们没有用正斜杠引用它,ruby会真的尝试运行这段代码。[]创建一个数组,然后尝试将^\W-放入数组中,这是无效的代码,因此会中断。

将其更改为/[^\W-]/将提供一个有效的正则表达式。

查看正则表达式,[]表示“匹配这个组中的任何字符。该组包含\W (意为非单词字符)和-,因此regex应该匹配任何非单词字符或任何连字符。”

由于传递给gsub的第二件事是空字符串,它最终应该用空字符串替换所有的非单词字符和连字符(从而去掉它们)。

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

它只将字符串转换为小写。

希望这会有所帮助:)

票数 3
EN

Stack Overflow用户

发布于 2008-09-26 03:13:34

你忘了刀伤了。应该是/[^\W-]/

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/138785

复制
相关文章
Jenkins容器安装ruby-runtime插件失败报错解决
 从上面的报错信息分析可能是由于Jenkins容器中的Java 11版本过高。我们单独下载一个低版本的jdk,然后将低版本的jdk拷贝到Jenkins容器中替换掉之前的Java 11版本。
非著名运维
2022/06/22
9140
Jenkins容器安装ruby-runtime插件失败报错解决
正则表达式快速入门
6月进入前端技术的学习,正则算是跳不过的一个坎了,这部分没有太多需要理解的内容,知道就是王道。 正则表达式(Regular Expression):在代码中常简写为regex,使用单个字符串来描述、
用户1216676
2018/01/24
1.4K0
正则表达式快速入门
python regex replace
正则匹配-直接内容替换 s = 'dsoheoifsdfscoopaldshfowefcoopasdfjkl;' ss = s.replace('coop','###') print(s,'\n',ss) dsoheoifsdfscoopaldshfowefcoopasdfjkl; dsoheoifsdfs###aldshfowef###asdfjkl; import re regex = re.compile(r'coop') # 正则匹配替换 regex.sub('$$$$$','sdlaf
py3study
2020/01/08
2.4K0
[Dream Big, Think Big, Achieve Big!] Regex Matching Problems 2
包子IT面试培训 助你拿到理想的offer! 有问题,问包子!Got question? Ask Baozi! 接着上一轮关于regex的博客讨论,下面我们讨论一下另一道比较常见的regular e
包子面试培训
2018/04/20
8700
boost::string or boost::regex
当中用蓝色标记出的部分(layout, local_size_x, local_size_y, local_size_z, in)为keyword,斜体字部分(a, b, c)为数据类型为unsigned int的数字,请编写一个函数,用于从文件里抽取出a, b, c的值。当中文件名称为输入參数,该函数的返回值是抽取得到的a,b,c三个值。
全栈程序员站长
2022/07/08
2.1K0
apk签名失败问题[通俗易懂]
1,复制 libconscrypt_openjdk_jni.so into 到当前路径下 2,复制 signapk.jar into 到当前路径下 3,然后执行如下命令给apk重新签名java -jar -Djava.library.path=. signapk.jar platform.x509.pem platform.pk8 xxx.apk signed-xxx.apk
全栈程序员站长
2022/09/01
1.7K0
C: GNU regex library (regex.h)正则表达式调用示例
GNU regex是GNU提供的跨平台的POSIX 正则表达式库(C语言)。 我也是最近才接触这个相对于C++/Java实现来说非常简陋,勉强够用的正则表达式库。 不算GNU提供的扩展函数,POSIX标准的regex库总共就4个函数regcomp,regerror,regexec,regfree, 以下以完整源码的方式调用以上函数完成对GNU regex library的基本测试。
10km
2021/11/15
1.1K0
gcc报错:terminate called after throwing an instance of ‘std::regex_error‘ what(): regex
mkdir build …/./configure make & make install
花狗Fdog
2022/05/09
2.2K0
【SSH登录失败】解决✅[ec2-user@x.x.x.x: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).]问题❌
显示报错信息为ec2-user@34.216.72.146: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
宝耶需努力
2023/10/09
1.1K0
【SSH登录失败】解决✅[ec2-user@x.x.x.x: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).]问题❌
Ruby 字符串 Frozen 和 unfreeze 的问题
看超人归来的时候,记得里面有个超人叫freeze ? 这家伙有一招,喝口水,然后往外一喷 一切就 freeze 。这不 ruby 也有freeze 。
田春峰-JCJC错别字检测
2019/02/14
1K0
Git验证失败的问题
在拉去项目的时候会进行一次身份验证,如果第一次输入失败后,之后拉取项目会一直报认证失败,这时候需要对本地的账号密码管理进行删除
明知山
2020/09/03
1.5K0
Ruby Programming | 连载 03 - Ruby 对象基础
Ruby 中所有的数据结构和值都是对象,包括基本的数字和字符串以及数组 Array、散列表 Hash 这样的复杂数据结构。
RiemannHypothesis
2022/10/05
2K0
Ruby Programming | 连载 03 - Ruby 对象基础
Linux引导grub失败问题
我的电脑装有 Windows 10 和 Manjaro 双系统,最近我把 Windows 10 升级了,没想到原来漂亮的 Manjaro grub 菜单界面就再也出不来了,只见终端弹出一下信息:
hotarugali
2022/02/28
9.1K0
Ruby Programming | 连载 02 - Ruby 语法基础
Ruby 的基本语法中包含了 Ruby 的基本运算符、I/O、控制流以及 Ruby 中的特殊对象和注释。
RiemannHypothesis
2022/09/28
5.9K0
Ruby On Rails 4 hello world,Ruby On Rails上手
有机会再试一试Rails了,仅仅是原来接触的是2,如今已然变成了4,似乎如今的安装比原来会快些。。
全栈程序员站长
2022/07/12
2.5K0
Ruby On Rails 4 hello world,Ruby On Rails上手
Ruby学习笔记之升级ruby的版本
升级ruby版本,有时候安装ruby的版本过低,需要进行升级,例如安装在centos6.7安装fpm需要ruby版本在1.9以上。
Jetpropelledsnake21
2019/04/25
3.2K0
hive regex insert join group cli
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/118336.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/13
8280
Ruby Programming | 连载 04 - Ruby 扩展基础
在 Ruby Programming | 连载 01 - Intro and Setup 中展示了通过 rvm 安装 Ruby 的过程,安装 Ruby 不仅会安装 ruby 解释器,还安装了 Ruby 语言支持的库和文件,在使用 ruby 解释器执行代码时都能够成功找到所需要的文件或者目录。
RiemannHypothesis
2022/10/05
1.2K0
Ruby Programming | 连载 04 - Ruby 扩展基础
Linker加载so失败问题分析
作 者 段聪,腾讯社交平台部高级工程师 商业转载请联系腾讯WeTest获得授权,非商业转载请注明出处。 WeTest 导读 近期测试反馈一个问题,在旧版本微视基础上覆盖安装新版本的微视APP,首次打开拍摄页录制视频合成时高概率出现crash。 那么我们直奔主题,看看日志: 另外复现的日志中还出现如下信息: '/data/data/com.tencent.weishi/appresArchiveExtra/res1bodydetect/bodydetect/libxnet.so: strtab
WeTest质量开放平台团队
2018/12/11
1.8K0
Linker加载so失败问题分析
MySQL创建表失败的问题
今天有一个朋友问我一个MySQL的建表问题,问题的现象是创建表失败,根据他的反馈,问题比较奇怪, CREATE TABLE XXX ..此处省略260多个字段 `xxxxIsAllowIn` varchar(4) COLLATE utf8_bin DEFAULT NULL COMMENT 'xx是否准入(是,否)', `xxxxIsAllowIn` varchar(30) COLLATE utf8_bin DEFAULT NULL COMMENT '理财-准入', PRIMARY KEY (
jeanron100
2018/03/22
5K0

相似问题

Ruby RegEx问题

20

Ruby中的Regex问题

10

Ruby和regex的问题非常奇怪

42

正则表达式'[\w-]+(\.[\w-]+)*‘不匹配

2124

Ruby Regex vs Python Regex

52
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

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