草庐IT

正则表达式 - 捕获空格分隔的单词

全部标签

python - 为什么某些正则表达式引擎会在单个输入字符串中匹配 .* 两次?

许多正则表达式引擎在单行字符串中匹配.*两次,例如,在执行基于正则表达式的字符串替换时:根据定义,第一个匹配项是整个(单行)字符串,正如预期的那样。在许多引擎中有第二个匹配项,即空字符串;也就是说,即使第一个匹配项消耗了整个输入字符串,.*仍会再次匹配,然后匹配输入字符串末尾的空字符串。注意:要确保只找到一个匹配项,请使用^.*我的问题是:这种行为有充分的理由吗?一旦输入字符串被完全使用,我不希望再次尝试找到匹配项。除了反复试验之外,您能否从支持的文档/正则表达式方言/标准中收集到哪些引擎表现出这种行为?更新:revo'shelpfulanswer解释当前行为的方式;至于潜在的原因,请

Ruby:为什么等号在文字正则表达式中会导致解析错误?

这些解析和执行良好:"=".scan(/=/)"=".scan(/=/)这会导致“未终止的正则表达式遇到文件结尾”:"=".scan/=/如果我在=之前插入一些内容,错误就会消失:"=".scan/^=/这是怎么回事? 最佳答案 我猜你正在点击thisintheparser:case'/':if(IS_BEG()){lex_strterm=NEW_STRTERM(str_regexp,'/',0);returntREGEXP_BEG;}if((c=nextc())=='='){set_yylval_id('/');lex_state

ruby - 如何使用 Ruby Prawn 替换现有 PDF 中的单词?

-你好桑迪普。我是绝地大师尤达的学徒。我的主人相信Ruby社区的力量很强大,并选择了我来完成一项使用Ruby语言完成的简单任务:我需要使用PrawnPDFgem来完成任务。我有一个名为Dooku.pdf的现有pdf文档-它包含有关EvilCountDooku事件的敏感信息。在Dooku.pdf中有一个名为{galaxy}的文本。{galaxy}始终位于pdf文档每一页的相同位置。我需要打开Dooku.pdf,将{galaxy}的每个实例替换为{planet},然后保存/关闭Dooku.pdf。我如何使用PrawnPDFgem完成这个任务?-愿原力与你同在 最

ruby - 如何在 Cucumber 表(多行参数)中使用正则表达式来区分表?

我正在使用场景表(multilinesteparguments)使用内置的.diff来使用cucumber检查来自屏幕的一些数据!CucumberAST表上的方法。我想检查内容是否与正则表达式匹配。Scenario:OneThenthetableappearsas:|One|Two|Three||/\d+/|/\d+/|/\d+/|实际的表格看起来像|One|Two|Three||123|456|789|这个场景翻译成“只要有几个数字,我不在乎”失败的示例步骤实现:Then/^thetableappearsas:$/do|expected_table|actual_table=[['O

ruby-on-rails - encode_www_form 将空格转换为 + 而不是 %20

我正在尝试从使用RubyonRails的散列创建http参数,我尝试使用URI.encode_www_form(params),但这没有正确生成参数。下面是我的哈希值params['Name'.to_sym]='NiaKun'params['AddressLine1'.to_sym]='AddressOne'params['City'.to_sym]='CityName'这个方法把空格转成+,我要的是把空格转成%20我收到"Name=Nia+Kun&AddressLine1=Address+One&City=City+Name"但我需要将此空格转换为%20

ruby - 当我已经在使用 %r 时,为什么 rubocop 要求我放置//围绕正则表达式?

我有以下正则表达式regexp=%r{((returned|undelivered)\smail|mail\sdelivery(\sfailed)?)}x但是当我在上面运行rubocop时,它会提示我需要“在正则表达式周围使用//”。我怎样才能绕过它? 最佳答案 您可以通过将.rubocop.yml文件添加到项目文件夹的根目录并设置适当的配置来禁用(和启用)任何rubocopcop。要查看您可以做什么,请查看rubocop包中的全局default.yml。它有完整的评论。对于这个特殊问题,创建一个.rubocop.yml和...要完

Ruby:在多个目录中的多个文件中搜索正则表达式

请原谅我的无知,我是Ruby新手。我知道如何使用正则表达式搜索字符串,甚至单个文件:str=File.read('example.txt')match=str.scan(/[0-9A-Za-z]{8,8}/)putsmatch[1]我知道如何在多个文件和目录中搜索静态短语pattern="hello"Dir.glob('/home/bob/**/*').eachdo|file|nextunlessFile.file?(file)File.open(file)do|f|f.each_linedo|line|puts"#{pattern}"ifline.include?(pattern)e

ruby - 正则表达式 - 这个用于素数检测的正则表达式的复杂性是多少?

这行ruby​​代码检测素数(太棒了!)。("1"*n)!~/^1?$|^(11+?)\1+$/#wherenisapositiveinteger详细信息在这篇博文中解释http://www.noulakaz.net/weblog/2007/03/18/a-regular-expression-to-check-for-prime-numbers/我很好奇它在BIG-O表示法中的表现。有人帮忙吗? 最佳答案 根据经验数据,它似乎是O(n2)。我对前10000个质数中的每100个运行Ruby代码。以下是结果:蓝点是记录的时间,橙色线是

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正则表达式:"