草庐IT

REGEXP_EXTRACT

全部标签

Ruby 1.9 unicode 在 Regexp 中转义

我刚刚将一个旧项目升级到Ruby1.9.3。我在使用unicode字符串时遇到了很多麻烦。归结为:p="\\username";"AnyString".match(/#{p}/)这在1.8中有效,并按预期返回nil。但是,在1.9中它会抛出:ArgumentError:invalidUnicodeescape我正在尝试匹配字符串中的'\u'。我认为这两个反斜杠会使它免于注册为unicode。我在这里错过了什么?编辑:单引号也不起作用:1.9.3p429:002>p='\\username';"AnyString".match(/#{p}/)ArgumentError:invalidUn

Ruby string.scan(/#{regexp_pattern}/) - 执行时间

问题:ruby.scan使用正则表达式模式最多需要5分钟。时间取决于正在扫描的字符串。测试在ruby​​“2.5.1”和ruby​​“2.4.2”上运行。例子:deftime_regexp_test(string)start=Time.nowputs"parsestart:#{start}"regexp_pattern="[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\.)+[a-zA-Z0-9](?:[a-

regex - 如何使用 Regexp.union 构建不区分大小写的正则表达式

我有一个字符串列表,需要使用Regexp#union从它们构建正则表达式.我需要生成的模式不区分大小写。#union方法本身不接受选项/修饰符,因此我目前看到两个选项:strings=%w|onetwothree|Regexp.new(Regexp.union(strings).to_s,true)和/或:Regexp.union(*strings.map{|s|/#{s}/i})两种变体看起来都有点奇怪。是否可以使用Regexp.union构造不区分大小写的正则表达式? 最佳答案 简单的起点是:words=%w[onetwothr

Ruby Regexp 精确匹配字符串

我有一个Ruby正则表达式问题。ifstring==/(^\d{1,3})/#thismatchesboth"24"and"24gravidautaliquam"#code...end我希望正则表达式只匹配“24”。我应该怎么做才能只允许数字? 最佳答案 ifstring=~/(^\d{1,3}$)/#code...end顺便说一句,如果您只想匹配“24”(而不是“39”或“42”),您不需要正则表达式,您需要进行直接比较:ifstring=="24"#code...end 关于Ruby

ruby - RegExp#match 只返回一个匹配项

请解释一下,为什么match()只返回一个匹配项,而不是四个(例如):s='aaaa'p/a/.match(s).to_a#=>["a"]奇怪的是,分组match()返回两个匹配,独立于实际匹配计数:s='aaaa'p/(a)/.match(s).to_a#=>["a","a"]s='aaaaa'p/(a)/.match(s).to_a#=>["a","a"]感谢您的回答。 最佳答案 需要使用.scan()进行多次匹配:ps.scan(/a/).to_a通过分组,整体匹配得到一个结果,每个组得到一个结果(使用.match()时。这两

ruby 正则表达式 : difference between new and union with a single regexp

我简化了示例。假设我有一个包含正则表达式代码的字符串。我希望正则表达式匹配一个文字点,因此我希望它是:\.所以我创建了以下Ruby字符串:"\\."然而,当我将它与Regexp.union一起使用来创建我的正则表达式时,我得到了这个:irb(main):017:0>Regexp.union("\\.")=>/\\\./这将匹配一个斜杠后跟一个点,而不仅仅是一个点。将之前的结果与此进行比较:irb(main):018:0>Regexp.new("\\.")=>/\./它给出了我想要的正则表达式,但没有所需的联合。您能解释一下为什么Ruby会那样做以及如何正确地合并正则表达式吗?使用的上下

ruby - 如何使用 Regexp.union 指定 Regexp 选项

在“HowdoIremovingURLsfromtext?”中建议使用以下代码:require'uri'#...schemes_regex=/^(?:#{URI.scheme_list.keys.join('|')})/i#...我试图将其改进为:schemes_regex=Regexp.union(URI.scheme_list.keys)但我不知道如何指定IGNORECASE选项(i)。 最佳答案 我认为不可能像那样将选项参数传递给Regexp.union。您当然可以在合并操作之后指定它们:require'uri'Regexp.

Ruby Regexp : + vs *. 特殊行为?

使用ruby​​regexp我得到以下结果:>>'foobar'[/o+/]=>"oo">>'foobar'[/o*/]=>""但是:>>'foobar'[/fo+/]=>"foo">>'foobar'[/fo*/]=>"foo"文档说:*:前面的零次或多次重复+:前面的一个或多个重复所以我希望'foobar'[/o*/]返回与'foobar'[/o+/]相同的结果有人对此有解释吗 最佳答案 'foobar'[/o*/]匹配零o出现在f之前的s,在位置0'foobar'[/o+/]那里无法匹配,因为至少需要有1个o,所以它反而匹配所

javascript - RegEx 使用 RegExp.exec 从字符串中提取所有匹配项

我正在尝试解析以下类型的字符串:[key:"val"key2:"val2"]里面有任意key:"val"对。我想获取键名和值。对于那些好奇的人,我正在尝试解析任务战士的数据库格式。这是我的测试字符串:[description:"aoeu"uuid:"123sth"]这是为了强调除空格之外的任何内容都可以在键或值中,冒号周围没有空格,并且值始终用双引号引起来。在节点中,这是我的输出:[deuteronomy][gatlin][~]$node>varre=/^\[(?:(.+?):"(.+?)"\s*)+\]$/g>re.exec('[description:"aoeu"uuid:"123

javascript - RegEx 使用 RegExp.exec 从字符串中提取所有匹配项

我正在尝试解析以下类型的字符串:[key:"val"key2:"val2"]里面有任意key:"val"对。我想获取键名和值。对于那些好奇的人,我正在尝试解析任务战士的数据库格式。这是我的测试字符串:[description:"aoeu"uuid:"123sth"]这是为了强调除空格之外的任何内容都可以在键或值中,冒号周围没有空格,并且值始终用双引号引起来。在节点中,这是我的输出:[deuteronomy][gatlin][~]$node>varre=/^\[(?:(.+?):"(.+?)"\s*)+\]$/g>re.exec('[description:"aoeu"uuid:"123