有可能使这个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