草庐IT

ruby - 为什么我不能用 gsub 替换字符串中的 '\\+'?

试试下面的代码:s='#value#'putss.gsub('#value#',Regexp.escape('*'))#=>'\*'putss.gsub('#value#',Regexp.escape('+'))#=>''什么鬼?看起来char'\+'(由Regexp.escape返回)被gsub完全忽略了。如何解决这个问题? 最佳答案 是因为特殊变量的插值。\+将替换为“与实际参与匹配的编号最高的捕获组匹配的文本”(参见http://www.regular-expressions.info/ruby.html上的特殊变量部分)bl

ruby - Ruby 中的 gsub 非 ASCII 字符

我正在尝试用以下代码替换字符串中的非ASCII字符:string.gsub(194.chr,'')当我这样做时,出现以下错误:RegexpError:正则表达式过早结束:/�/谁能告诉我如何实现这一点? 最佳答案 >>string="foo\xC2bar"=>"foo\xC2bar">>string.force_encoding"ASCII-8BIT"=>"foo\xC2bar">>string.gsub(194.chr,'')=>"foobar" 关于ruby-Ruby中的gsub非A

ruby - 使用 Ruby 和 gsub 替换字符串中大括号内的文本(包括括号本身)

我有一个字符串“Thisismy{foo}string”。我想用一些操作值替换大括号的内容,例如:“这是我的FOO字符串”我已经走到这一步了:result=mystring.gsub(/\{(.*?)\}/){|m|m.upcase}但这会返回“Thisismy{FOO}string”——即大括号仍然存在。如何对我的正则表达式进行表述,以便大括号也被替换? 最佳答案 产生的字符串是整个匹配项,因此它包括大括号。由于您只想处理第一个捕获组中的部分,因此可以在block中使用$1而不是m。

ruby - gsub 或 scan 中的匹配位置

当使用gsub或scan=~返回的索引)的最佳方法是什么?/? 最佳答案 "hello".gsub(/./){Regexp.last_match.offset(0).first}=>"01234"参见Regexp.last_match和MatchData. 关于ruby-gsub或scan中的匹配位置,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/9544319/

java - java中的ruby gsub函数,可能是replaceAll?

我一直在努力翻译这个funcFormat=funcFormat.gsub(/sqrt\((.*)\)/,'Math.sqrt(\1)')Java中的这个funcFormat=funcFormat.replaceAll("sqrt((.*))","Math.sqrt($1)");或者有什么方法可以将数学格式化为文本吗?例如:2x^2sqrt(x^3/2)到2xpow2sqrt(xpow3/2)谢谢,顺便说一句,我是这个网站的新人。 最佳答案 您可以使用以下表达式:funcFormat=funcFormat.replaceAll("sq

Ruby gsub 删除电话号码中的非法字符

我想删除字符串中不属于电话号码字符串的所有字符。第一个字符可以是也可以不是“+”,所有其他字符必须是数字。我有gsub(/\D/,''),但我想保留第一个字符,如果它是“+”(当然是数字)。然后我尝试了一些否定,但这也不对:gsub(/^(\+?(\d))/,'')。如果它是“+”,我如何忽略正则表达式的第一个字符? 最佳答案 如何在开始时使用负前瞻:gsub(/(?!^\+)\D*/,'')基本上,上面的正则表达式应该删除第一个字符不是字符串开头的单个“+”字符的任何非数字系列。希望对您有所帮助。

ruby - 如何转义 gsub 替换字符串中的反向引用

有一些gsub的替代方法可以将一个字符串替换为另一个?根据文档“如果替换是一个字符串,它将替换匹配的文本。它可能包含对模式捕获组的反向引用,形式为\d,其中d是组号,或\k,其中n是组名。"我不想要这个功能..简化示例:"abc".gsub("b","\\7")->"ac"我想要"a\7c"..问题是从用户那里询问替换字符串(实际上它是一个包含"xxx\7.0\yyy"的路径),如果它很简单一个固定的string我可以自己转义它。我知道这行得通:"abc".gsub("b"){|x|"\\\7"}..但作为ruby​​如此美丽的语言,我相信到目前为止应该有一个我在文档中忽略的简单替代方

ruby - 有没有办法使用 gsub 替换字符串中的一系列字符?

我想用“#”替换除最后4个字符之外的所有字符...就像您在信用卡对帐单上看到的那样。我已经使用Array#each方法遍历索引[0..-4]和另一个索引[-4..-1]并将两者的结果铲到一个新字符串中来完成此操作。我在想也许这可以用正则表达式更好地完成?但我是正则表达式的新手,谷歌还没有找到任何我可以使用的关于替换整个范围而不丢失字符串长度的东西。我试过了str.gsub(str[0..-5],'#')(以及其他一些东西)但它用单个字符替换了整个范围。如何使用正则表达式实现我的目标? 最佳答案 是的,这可以通过正则表达式实现。>"1

ruby - 如何理解 gsub(/^.*\//, '' ) 或正则表达式

分解以下代码以理解我的正则表达式和gsub理解:str="abc/def/ghi.rb"str=str.gsub(/^.*\//,'')#str=ghi.rb^:字符串的开头\/:/的转义字符^.*\/:/在字符串中从开始到最后出现的所有内容我的理解对吗?.*究竟是如何工作的? 最佳答案 您的一般理解是正确的。整个正则表达式将匹配abc/def/并且String#gsub将用空字符串替换它。但是,请注意String#gsub不会就地更改字符串。这意味着str将包含替换后的原始值("abc/def/ghi.rb")。要就地更改它,您可

ruby-on-rails - ruby (Rails) gsub : pass the captured string into a method

我正在尝试匹配这样的字符串:text="Thisisa#hastag"raw(h(text).gsub(/(?:\B#)(\w*[A-Z]+\w*)/i,embed_hashtag('\1')))defembed_hashtag('data')#...somecodetoturnthecapturedhashtagstringintoalink#...returnthevariablethatincludesthefinalstringend我的问题是,当我在使用gsub调用的embed_hashtag方法中传递'\1'时,它只是按字面意思传递"\1",而不是从我的正则表达式中捕获的第