草庐IT

javascript - 将 Java 正则表达式转换为 javascript 正则表达式

全部标签

ruby - `+` 在 `*` 之后的含义,当后者在正则表达式中用作量词时

今天我遇到了下面的正则表达式,想知道Ruby会用它做什么:>"#a"=~/^[\W].*+$/=>0>"1a"=~/^[\W].*+$/=>nil在这种情况下,Ruby似乎忽略了+字符。如果这是不正确的,我不确定它在做什么。我猜它没有被解释为量词,因为*没有转义并且被用作量词。在Perl/Ruby正则表达式中,有时当一个字符(例如,-)在不能被解释为特殊字符的上下文中使用时,它会被视为文字。但如果在这种情况下发生这种情况,我希望第一个匹配失败,因为左值字符串中没有+。这是对+字符的巧妙正确使用吗?以上行为是错误吗?我是否遗漏了一些明显的东西? 最佳答案

ruby 正则表达式 : "capture string unless it is followed by..."

我的正则表达式捕获引用的短语:"([^"]*)"我想通过忽略引号来改进它,引号后跟',-'(按此特定顺序排列的逗号、空格和破折号)。我该怎么做?测试:http://rubular.com/r/xls6vN1w92 最佳答案 这应该可以做到,使用NegativeLookahead:"(?!,-)([^"]*)"(?!,-)有点恶心,但它有效。您要确保引号后面没有跟您的字符串,否则匹配将从结束引号开始。http://rubular.com/r/yFMyUKJOHL 关于ruby正则表达式:"

ruby - Watir-Webdriver 是否支持点击目标为 javascript 的链接?

我是Ruby和Watir-Webdriver的新手。我有一套用VBScript编写的站点自动化程序,我想将其转换为Ruby/Watir,因为我现在必须支持Firefox。我发现我真的很喜欢Ruby,而且我正在研究Watir,但我已经花了一周时间试图让Webdriver显示我的登录屏幕。该站点以带有“我同意”区域的“警告屏幕”开头。用户点击我同意并显示登录屏幕。我需要单击该区域以显示登录屏幕(这是同一页面,实际上是一个表单,只是隐藏了)。我整天都在用VBScript这样做:objExplorer.Document.GetElementsByTagName("area")(0).click

ruby - 为什么我会看到这两个几乎相同的 Ruby 正则表达式模式的不同结果,为什么一个匹配我认为不应该匹配的内容?

使用Ruby1.9.2,我在IRB中有以下Ruby代码:>r1=/^(?=.*[\d])(?=.*[\W]).{8,20}$/i>r2=/^(?=.*\d)(?=.*\W).{8,20}$/i>a=["password","1password","password1","pass1word","password1"]>a.each{|p|puts"r1:#{r1.match(p)?"+":"-"}\"#{p}\"".ljust(25)+"r2:#{r2.match(p)?"+":"-"}\"#{p}\""}这会产生以下输出:r1:-"password"r2:-"password"r1:

ruby-on-rails - Ruby表达式 '-'后留空格的效果

今天我在我的Rails控制台中尝试了一些东西,这发生了,2.0.0p247:009>Date.today-29.days=>Fri,07Feb20142.0.0p247:010>Date.today-29.days=>Thu,09Jan2014我很困惑。我可以看到我缺少一些基本的东西。但这让我印象深刻!谁能解释为什么会这样? 最佳答案 实际发生的是这样的:Date.today(-29.days)#=>Fri,07Feb2014today有一个名为start的可选参数,默认为Date::ITALY。Anoptionalargument

ruby - 将 URL 和 @* 转换为链接

我正在使用HTTParty和Hashie获取最新的推文。tweet=Hashie::Mash.newHTTParty.get(http://twitter.com/statuses/user_timeline/ethnt.json).firstputstweet.text我希望能够将每个链接(http://*.*)和用户名(@.)变成链接。这两个的正则表达式是什么,我将如何实现它? 最佳答案 deflink_urls_and_userss#regexpsurl=/(|^)http:\/\/([^\s]*\.[^\s]*)(|$)/u

ruby - 十六进制字符串到 Ruby 中的 signed int 转换

如何在ruby​​中将十六进制字符串转换为32位有符号整数?例如a="fb6d8cf1"#hexstring[a].pack('H*').unpack('l')#fromthedocumentationitunpackstoits32bitsignedint它转换为-242455045但实际答案是-76706575你能指出我做错了什么吗? 最佳答案 您似乎遇到了字节序问题。这给出了期望的结果:[a].pack("H*").unpack("l>")#=>[-76706575]["038a67f90"].pack("H*").unpac

Ruby to_s 转换为二进制(参数中的 Splat 运算符)

如果我运行以下代码,前两行会返回我所期望的结果。然而,第三个返回2的二进制表示。2.to_s#=>"2"2.to_s*2#=>"22"2.to_s*2#=>"10"我知道在调用to_s时传入2会将我的输出转换为二进制,但为什么to_s忽略第三个中的*案件?如果有任何不同,我正在运行Ruby1.9.2。 最佳答案 对,正如Namida已经提到的,Ruby解释2.to_s*2作为2.to_s(*2)因为方法调用中的圆括号在Ruby中是可选的。这里的星号就是所谓的splatoperator.这里唯一令人费解的问题是为什么*2的计算结果为2

ruby - 将字符串转换为实例变量

我有一个数组["agreement","user","client"]。有什么方法可以将其项转换为对象@agreement、@user、@client? 最佳答案 ["agreement","user","client"].map{|k|instance_variable_get("@#{k}")} 关于ruby-将字符串转换为实例变量,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/question

ruby - 您如何指定适用于英语以外的欧洲语言的正则表达式字符范围?

我正在使用Ruby的正则表达式引擎。我需要编写一个执行此操作的正则表达式WIKI_WORD=/\b([a-z][\w_]+\.)?[A-Z][a-z]+[A-Z]\w*\b/但也可以使用除英语以外的其他欧洲语言。我认为字符范围[a-z]不会涵盖德语等的小写字母。 最佳答案 WIKI_WORD=/\b(\p{Ll}\w+\.)?\p{Lu}\p{Ll}+\p{Lu}\w*\b/u应该在Ruby1.9中工作。\p{Lu}和\p{Ll}是大写和小写Unicode字母的简写。(\w已经包含下划线)另见thisanswer-您可能需要在UTF