Tag: 正则表达

在Middleman中的整个页面上执行Ruby方法

在我的Middleman构建的网站上,我需要对所有页面(模板)的内容执行特定的Ruby代码。 例如,如果我在config.rb有以下帮助器: def myexample(text) text.gsub(“dog”,”cat”) end 在我的test.html.haml : = myexample(“Some text about a dog.”) 我的预览和生成的/test.html会显示: Some text about a cat. 但是,我使用几种不同的方式来输出需要修改的文本,最明显的是通过HAML的:markdownfilter,所以我不希望将所有内容包装在= myexample(“Text”)帮助器中。 我希望能够运行Ruby代码,该代码将所有页面的内容(最好)或生成的HTML输出(如果第一个选项不可能)作为传递给这种帮助器的参数。 理想情况下,此代码将在开发和构建环境中运行,但如果这不可能,则构建就足够了。 有可能这样做吗? PS。 在我的特定情况下,我使用简写表示法来引用其他页面然后我使用正则表达式和eval()以便用数据文件中的相对链接替换它们 。

树顶基本解析和正则表达式用法

我正在使用ruby Treetop库开发一个脚本,并且正在使用其正则表达式的语法。 首先,许多在其他设置中工作的正则表达式在树梢上不起作用。 这是我的语法:(myline.treetop) 语法MyLine 规则线 字符串空白条件 结束 规则字符串 [\ S] * 结束 规则空白 [\ S] * 结束 规则条件 “new”/“old”/“used” 结束 结束 这是我的用法:(usage.rb) 需要’rubygems’ 需要’树梢’ 要求’多语言’ 要求’myline’ parser = MyLineParser.new p parser.parse(“randomstring new”) 这应该找到新的词肯定,它确实! 现在我不会扩展它,以便它可以找到新的如果输入字符串变为“randomstring anotherstring new yetanother andanother”并且可能在规则条件的正则表达式之前和之后具有任意数量的字符串,后跟空格(包括选项卡)。 换句话说,如果我将任何带有“new”等单词的句子传递给它,它应该能够匹配它。 所以我要说我将语法改为: 规则线 字符串空白条件空白字符串 结束 然后,它应该能够找到匹配: p parser.parse(“randomstring new anotherstring”) 那么,我必须做些什么来允许在条件之前和之后重复字符串空白? 如果我试着写这个: 规则线 (字符串空白)*条件(空白字符串)* 结束 ,它进入一个无限循环。 […]

正则表达式:匹配包含数字和字母的字符串,但不包含只是数字的字符串

题 我希望能够使用单个正则表达式(如果可能)要求字符串适合[A-Za-z0-9_]但不允许: 字符串只包含数字或/和符号。 以符号开头或结尾的字符串 彼此相邻的多个符号 有效 test_0123 t0e1s2t3 0123_test te0_s1t23 t_t 无效 t__t ____ 01230123 _0123 _test _test123 test_ test123_ 规则的原因 这样做的目的是过滤我正在处理的网站的用户名。 出于特定原因,我已达到规则。 仅包含数字和/或符号的用户名可能会导致路由和数据库查找出现问题。 /users/#{id}的路由允许id为用户的id或用户的名称。 所以名称和ID不应该碰撞。 _test看起来很奇怪,我不相信它是有效的子域名,即_test.example.com 我不喜欢t__t作为子域的外观。 即t__t.example.com

部分正则表达式匹配

我有一个正则表达式,我正在测试输入的字符流。 我想知道是否有一种方法可以将正则表达式与输入匹配,并确定它是否是消耗整个输入缓冲区的部分匹配? 即在r​​egexp完成之前到达输入缓冲区的末尾。 我希望实现决定是等待更多的输入字符,还是中止操作。 换句话说,我需要确定哪一个是真的: 在匹配正则表达式之前已达到输入缓冲区的末尾 例如”foo” =~ /^foobar/ 正则表达式完全匹配 例如”foobar” =~ /^foobar/ 正则表达式无法匹配 例如”fuubar” =~ /^foobar 输入未打包。

正则表达式根据之前匹配的内容匹配

我正在尝试编写一个正则表达式来validation代数国际象棋符号中的移动。 这是我到目前为止所拥有的: / OO(-O)? # Castling |[KQRBN]x?[ah][1-8]\+? # Most normal moves and captures / 我丢失的地方是典当促销。 骑士,主教或中心棋子只能通过捕获来提升它开始的文件或任何一方的文件。 根据是否在a-或h-文件上,可以通过直线移动或捕获到一侧来促进车辆典当。 所以像 /[ah](x[ah])?[18]=[QRBN]\+?/ 不起作用,因为fxh8不是有效的移动(只有fxe8和fxg8)。 我可以走很长的路 /(a(xb)?|h(xg)?|b(x[ac])?…/ # insert 5 more files in place of the … 但那不是很有效率。 我想使用分组,这样我就可以做车,以及其他一切。 我有这样的想法: /([bg])(x(\1±1))?/ 表示“字母b到g之后可能跟在它们之前或之后的字母”。

Ruby Regex用于舍入尾随零

我正在寻找一个正则表达式从十进制数中删除尾随零。 它应该返回以下结果: 0.0002300 -> 0.00023 10.002300 -> 10.0023 100.0 -> 100 1000 -> 1000 0.0 -> 0 0 -> 0 基本上,如果小数部分为0,它应该删除尾随零和尾随小数点。当值为0时,它也应该返回0。 有什么想法吗? 谢谢。