Tag: regex

如何理解gsub(/^.*,//,”)或正则表达式

分解下面的代码来理解我的正则表达式和gsub理解: str = “abc/def/ghi.rb” str = str.gsub(/^.*\//, ”) #str = ghi.rb ^ :字符串的开头 \/ :转义字符为/ ^.*\/ :字符串中从^.*\/开始到最后一次出现的所有内容 我对表达的理解是对的吗? .*如何正常工作?

Ruby Regex – 需要替换正则表达式匹配中每个字符的出现

这是我的字符串: mystring = %Q{object1=”this is, a testyay’, asdkf’asfkd”, object2=”yo ho’, ho”} 我将在逗号上拆分mystring ,因此我想(暂时)分出位于转义引号之间的逗号。 所以,我需要匹配转义引号+一些字符+一个或多个逗号+转义引号,然后在匹配的字符串中gsub逗号。 我想出的gsub的正则表达式是/(“.*?),(.*?”)/ ,我就像这样使用它: newstring = mystring.gsub(/(“.*?),(.*?”)/ , “\\1|TEMPSUBSTITUTESTRING|\\2”) ,但这只替换它在转义引号之间找到的第一个逗号。 如何让它替换所有逗号? 谢谢。

使用Ruby正则表达式使用常规双引号转义’“’

我的文字有这些花哨的双引号:”’我想用Ruby gsub和regex用常规双引号替换它们。 这是一个例子,我到目前为止: sentence = ‘This is a quote, “Hey guys!”’ I couldn’t figure out how to escape double quotes so I tried using 34.chr: sentence.gsub(““”,34.chr). This gets me close but leaves a back slash in front of the double quote: sentence.gsub(““”,34.chr) => ‘This is a quote, \”Hey guys!”’

正则表达式:在url字符串的两个斜杠之间对第二个最后一个值进行子串

我有一个像这样的字符串: http://www.example.com/value/1234/different-value 我该如何提取1234 ? 注意:最后可能有斜杠: http://www.example.com/value/1234/different-value http://www.example.com/value/1234/different-value/

Ruby超级不敏感的Regex,用于将学校名称与重音和其他变音符号相匹配

在其他编程语言中已经提出了这个问题,但是如何在Ruby上执行重音不敏感的正则表达式呢? 我目前的代码是这样的 scope :by_registered_name, ->(regex){ where(:name => /#{Regexp.escape(regex)}/i) } 我想也许我可以用点替换非字母数字+空格字符,并删除escape ,但是没有更好的方法吗? 如果我这样做,恐怕我能抓到奇怪的东西…… 我现在正在瞄准法语,但是如果我还可以将其修复为其他很酷的语言。 我正在使用Ruby 2.3,如果这可以帮助。 我意识到我的要求实际上有点强,我还需要捕捉像破折号等等。我基本上是导入一个学校数据库( URL在这里 ,标签是 ),我希望人们能够找到他们的学校输入名字。 搜索查询和搜索请求都可能包含重音,我相信最简单的方法是使“两者”不敏感。 “Télécom”应与“电信”相匹配 “établissement”应与“etablissement”相匹配 “Institutsenérieurnationalde l’artisanat – Chambredemétiersetde l’Artisanat en Moselle”应与“artisanat chambredemétiers”相匹配 “Ecolehôtelièred’Avignon(CCI du Vaucluse)”应与Ecole hoteliere d’avignon相匹配“(对于括号,可以跳过它) “Ecolefrançaised’hôtesses”应与“ecole francaise d’hot”相匹配 我在那个数据库中找到了疯狂的东西,我会考虑对这个输入进行消毒 “Académieinternationalede management – Hotel&Tourism Management Academy”应该与“Hotel Tourism”相匹配(请注意&实际上是用XML编写的)

在Ruby的“gsub”和Vim的替换命令中,“g”代表什么?

Ruby和Vim都使用“g”和替换命令来表示“所有事件”。 “g”代表什么? 具体来说,在Ruby中, String类有两个“子”命令: sub将仅替换第一次出现,而gsub将替换所有出现的命令。 例如: string = “One potato, two potato, three potato, four.” string.sub(‘potato’,’banana’) # => “One banana, two potato, three potato, four.” string.gsub(‘potato’,’banana’) # => “One banana, two banana, three banana, four.” 类似地,在Vim中:%s/foo/bar将查看整个文件( %表示% )并且每行替换一次,但是:%s/foo/bar/g将在每一行上执行所有操作。 我的猜测是,在这两种情况下,“g”意味着“贪婪”,因为Ruby命令和Vim命令都接受正则表达式,但我对贪婪匹配的理解是“匹配符合这些条件的最长子串”,而不是“匹配尽可能多的子串。” (参见“ 注意贪婪! ”)

我如何在像rubk中的范围正则表达式中使用awk / start /,/ stop /

我想像这样做一个AWK风格的范围正则表达式: awk ‘ /hoststatus/,/\}/’ file 在AWK中,这将打印文件中两个模式之间的所有行: hoststatus { host_name=myhost modified_attributes=0 check_command=check-host-alive check_period=24×7 notification_period=workhours check_interval=5.000000 retry_interval=1.000000 event_handler= } 我如何在Ruby中做到这一点? 额外奖励:你会怎么用Python做的? 这在AWK中非常强大,但我是Ruby的新手,不知道你是怎么做的。 在Python中,我也找不到解决方案。

如何在Ruby中生成正则表达式字符串匹配的百分比?

我正在尝试构建一个简单的方法来查看数据库中的大约100个条目以获取姓氏,并拉出所有匹配超过特定字母百分比的条目。 我目前的做法是: 将数据库中的所有100个条目拉入数组 在执行以下操作时迭代它们 将姓氏拆分为一个字母数组 从另一个数组中减去该数组,该数组包含我要匹配的名称的字母,只留下不匹配的字母。 取结果的大小,除以步骤3中数组的原始大小,得到一个百分比。 如果百分比高于预定义阈值,请将该数据库对象推送到结果数组中。 这有效,但我觉得必须有一些很酷的ruby / regex / active记录方法来更有效地做到这一点。 我google了很多但找不到任何东西。

正则表达式,在Ruby中具有前瞻性

我当前的正则表达式之争是在字符串中的数字前替换所有逗号。 然后正则表达式必须忽略所有后续逗号。 我已经在rubular上拧了大约一个小时,看起来似乎无法正常工作。 测试字符串…… ‘this is, a , sentence33 Here, is another.’ 期望的输出…… ‘this is comma a comma sentence33 Here, is another.’ 所以有些东西…… testString.gsub(/\,*\d\d/,”comma”) 为了给你一些背景知识,我正在做一些有趣的侧面项目。 我收集的元素主要以逗号分隔,从两位数年龄开始。 然而,有时候可能包含逗号的年龄前的标题。 为了保留我稍后设置的结构,我需要替换标题中的逗号。 在尝试叠加溢出之后的答案…… 我还有一些问题。 不要笑,但这里是从屏幕抓取导致问题的实际线… statsString = ” 23, 5’9\”, 140lb, 29w, Slim, Brown Hair, Shaved Body, White, Looking for Friendship, 1-on-1 Sex, Relationship. Out Yes,SmokeNo,DrinkNo,DrugsNo,ZodiacCancer. Versatile, 7.5\” Cut, […]

使用pandoc ruby​​将HTML和内联Mathjax数学转换为LaTeX

我正在构建一个Rails应用程序,我正在寻找一种方法将数据库条目与html和内联MathJax数学(TeX)转换为LaTeX以进行pdf创建。 我发现了类似我的类似问题: 使用pandoc将html mathjax转换为markdown 如何使用pandoc将带有mathjax的HTML转换为latex? 我在这里看到两个选项: 创建一个Haskell可执行文件,在将html转换为LaTeX时,只留下像\(y=f(x)\)这样的东西 编写一个执行以下操作的ruby方法: 取string并将其拆分为带有正则表达式的array ( string.split(regex) ) 循环创建的array ,如果内容匹配regex将部分转换为LaTeX,不包括使用PandocRuby.html(string).to_latex内联数学PandocRuby.html(string).to_latex 将所有内容连接在一起( array.join ) 我更喜欢ruby方法解决方案,因为我在Heroku上托管我的应用程序,我不喜欢将二进制文件签入git。 注意: pandoc二进制文件以这种方式实现http://www.petekeen.net/introduction-to-heroku-buildpacks ) 所以我的问题是: regex应该将string分割为\(math\) 。 例如, string可以如下所示: text \(y=f(x) \iff \log_{10}(b)\) and \(a+b=c\) text 并且为了完整起见,在转换为LaTeX时,如何编写Haskell脚本以留下\(math\)并且ruby方法不是可能的解决方案?