有可能使这个ruby正则表达式代码更短吗?
特别是这样的代码:有可能使这个ruby正则表达式代码更短吗?,ruby,regex,Ruby,Regex,特别是这样的代码: regex = Regexp.new(/param\s*=\s*([^\|]*)/) regex.match(text).to_s link = $1 link.strip! text =~ /param\s*=\s*([^|]*)/ match = $~[1] 我甚至试过滥用gsub,但这不是正确的方法® regex = Regexp.new(/regex/) regex.match(text).to_s match = $1 从输入字符串text到变量match中获
regex = Regexp.new(/param\s*=\s*([^\|]*)/)
regex.match(text).to_s
link = $1
link.strip!
text =~ /param\s*=\s*([^|]*)/
match = $~[1]
我甚至试过滥用gsub,但这不是正确的方法®
regex = Regexp.new(/regex/)
regex.match(text).to_s
match = $1
从输入字符串
text
到变量match
中获取捕获组编号1的内容,因此给定如下字符串:
regex = Regexp.new(/param\s*=\s*([^\|]*)/)
regex.match(text).to_s
link = $1
link.strip!
text =~ /param\s*=\s*([^|]*)/
match = $~[1]
您只想提取“煎饼”,对吗?若有,则:
s = "blah blah param=pancakes|eggs"
\s*
将吃掉所有前导空格,因此不需要一半的空格。如果提取的值中根本不需要任何空格,则:
you_want = s[/param\s*=\s*([^|]+)/, 1]
如果只想去掉尾随空格,请添加:
如果s
不支持正则表达式,则此函数将引发异常
有关更多详细信息,请参阅
我还将您的
[]*
更改为[]+
,以避免完全不匹配。此外,您不必转义字符类中的大多数元字符(参见Tim的评论),因此在字符类中只要
就可以了。好的,您可以将正则表达式缩短一个字符:/param\s*=\s*([^ |]*)/
。但我不懂Ruby,所以我不知道这段代码到底是做什么的。我尝试使用正则表达式从字符串中提取数据,但我无法在一行中完成。“[^ |]]-|是特殊字符-忽略它安全吗?在字符类中,regex元字符不必转义(除了可能的[
,]
,-
和^
,取决于它们的位置)。@mu:谢谢!看,我不认识鲁比:)
you_want = s[/param\s*=\s*([^|]*)/, 1].rstrip