Ruby 与字符串中的每个单词匹配而不考虑空格或连字符的正则表达式?
我觉得这个问题放在这里会很有趣 例如,我有一个用于搜索查询的字符串,如:Ruby 与字符串中的每个单词匹配而不考虑空格或连字符的正则表达式?,ruby,regex,Ruby,Regex,我觉得这个问题放在这里会很有趣 例如,我有一个用于搜索查询的字符串,如:“hello world” 可以有如下字符串: Hello World Hello-world hello!! world /hi.*?pals/i 如何编写一个动态匹配这些参数的表达式?如果表达式起作用,那么它也应该起作用: Search: "Hi pals!" Hi pals Hi! Pals! Hi-pals 可能吗?当然,您可以这样做: Hello World Hello-world hello!! worl
“hello world”
可以有如下字符串:
Hello World
Hello-world
hello!! world
/hi.*?pals/i
如何编写一个动态匹配这些参数的表达式?如果表达式起作用,那么它也应该起作用:
Search: "Hi pals!"
Hi pals
Hi! Pals!
Hi-pals
可能吗?当然,您可以这样做:
Hello World
Hello-world
hello!! world
/hi.*?pals/i
结尾处的尾随i
启用不区分大小写的匹配,并且*?
匹配“hi”
和“pals”
之间的任何字符(换行符除外)
红宝石演示:
请注意,它还匹配一个字符串,如“Himalaya pals”:
如果您不希望出现这种情况,请在混合中添加一些单词边界:
/\bhi\b.*?\bpals\b/i
当然,你可以这样做:
Hello World
Hello-world
hello!! world
/hi.*?pals/i
结尾处的尾随i
启用不区分大小写的匹配,并且*?
匹配“hi”
和“pals”
之间的任何字符(换行符除外)
红宝石演示:
请注意,它还匹配一个字符串,如“Himalaya pals”:
如果您不希望出现这种情况,请在混合中添加一些单词边界:
/\bhi\b.*?\bpals\b/i
大概你也不想让“hi-pals”和“chi-palsy”相提并论吧?似乎您正在尝试查找与输入内容具有相同单词的字符串。如果是这样,这里有一个方法:
class String
def words
scan(/\w+/).map(&:downcase)
end
end
a = ["Hi pals", "Hi, pals", "hi-pals", "hi! ? pals?", "hipals", "himalaya pals"]
search = "hi pals"
a.select {|test| test.words == search.words}
=> ["Hi pals", "Hi, pals", "hi-pals", "hi! ? pals?"]
大概你也不想让“hi-pals”和“chi-palsy”相提并论吧?似乎您正在尝试查找与输入内容具有相同单词的字符串。如果是这样,这里有一个方法:
class String
def words
scan(/\w+/).map(&:downcase)
end
end
a = ["Hi pals", "Hi, pals", "hi-pals", "hi! ? pals?", "hipals", "himalaya pals"]
search = "hi pals"
a.select {|test| test.words == search.words}
=> ["Hi pals", "Hi, pals", "hi-pals", "hi! ? pals?"]
有没有办法让它充满活力?这肯定与hello worldWell不匹配。您可以这样做:
/hi.*?pals | hello.*?world/i
来匹配这两个问候语。不知道你说的动态是什么意思…有没有办法让它变得动态?这肯定与hello worldWell不匹配。您可以这样做:/hi.*?pals | hello.*?world/i
来匹配这两个问候语。不知道你说的动态是什么意思。。。