首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ruby:了解正则表达式

Ruby:了解正则表达式
EN

Stack Overflow用户
提问于 2011-10-04 22:22:53
回答 4查看 132关注 0票数 0

我正在尝试写一个脚本,它将匹配字符串中的所有单词,并将剥离所有非单词(IE:.点、与号、冒号等),并将它们替换为连字符。

示例字符串:

L. L. Cool J & Sons: The Cool Kats

输出示例:

L-L-Cool-J-Sons-The-Cool-Kats

下面是我正在使用的一些代码:

代码语言:javascript
复制
str = "L. L. Cool J & Sons: The Cool Kats"
str.scan(/\w+/)

谢谢你的帮助!我仍然是regex的新手。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-10-04 22:32:28

更新:我刚刚注意到这两个调用可以表示为一个:

代码语言:javascript
复制
str.gsub(/\W+/, '-')
=> "L-L-Cool-J-Sons-The-Cool-Kats"

...which得到的结果与纳伦德拉的答案或我最初的答案相同:

代码语言:javascript
复制
# 1st gsub: replace all non-words with hyphens
# 2nd gsub: replace multiple hyphens with a single one
str.gsub(/\W/,'-').gsub(/-+/, '-')
=> "L-L-Cool-J-Sons-The-Cool-Kats"
票数 1
EN

Stack Overflow用户

发布于 2011-10-04 22:33:16

在一行中,找到所有不是"word字符“的文本,并用破折号替换:

代码语言:javascript
复制
str.gsub(/\W+/, '-')

请注意,“单词字符”包括数字和下划线。要只允许使用字母,您可以使用以下命令:

代码语言:javascript
复制
str.gsub(/[^A-Za-z]+/, '-')
票数 2
EN

Stack Overflow用户

发布于 2011-10-04 22:26:02

对于非单词字符,可以使用\W。它应该能做好你的工作。\w代表单词字符。我不太使用ruby,但它应该看起来像这样的result = subject.gsub(/\W+/, '-')

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

https://stackoverflow.com/questions/7649408

复制
相关文章

相似问题

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