Tag: 正则表达式

使用Ruby扫描方法捕获组不能按预期工作

我需要从多行字符串中获取一组浮点数(正数和负数)。 例如: -45.124, 1124.325等 这是我做的: text.scan(/(\+|\-)?\d+(\.\d+)?/) 虽然它在regex101上工作正常(捕获组0匹配我需要的所有东西),但它在Ruby代码中不起作用。 任何想法为什么会发生以及如何改进?

使用ruby从一些.txt文档中提取所有电子邮件地址

我必须从一些.txt文档中提取所有电子邮件地址。 这些电子邮件可能具有以下格式: a@abc.com {a, b, c}@abc.edu 一些其他格式,包括一些@标志。 我选择ruby作为我的第一语言来编写这个程序,但我不知道如何编写正则表达式。 有人会帮助我吗? 谢谢!

为什么Ruby / ] /会错过一些标点字符?

Ruby /[[:punct:]]/应该匹配所有“标点字符”。 根据维基百科的说法,这意味着每个POSIX标准/[\]\[!”#$%&'()*+,./:;?@\^_`{|}~-]/ / [|]。[!] /[\]\[!”#$%&'()*+,./:;?@\^_`{|}~-]/ %&’()* +,。/ /[\]\[!”#$%&'()*+,./:;?@\^_`{|}~-]/ /。 它匹配: -[]\;’,./!@#%&*()_{}::”? 但是,它不匹配: =`~$^+| (至少在ruby 1.9.3p194中)。 是什么赋予了?

Ruby 1.9:具有未知输入编码的正则表达式

是否有一种可接受的方法来处理Ruby 1.9中的正则表达式,其中输入的编码是未知的? 假设我的输入恰好是UTF-16编码: x = “foobarbaz” y = x.encode(‘UTF-16LE’) re = /(.*)/ x.match(re) => #<MatchData "bar” 1:”bar”> y.match(re) Encoding::CompatibilityError: incompatible encoding regexp match (US-ASCII regexp with UTF-16LE string) 我目前的方法是在内部使用UTF-8并在必要时重新编码(副本)输入: if y.methods.include?(:encode) # Ruby 1.8 compatibility if y.encoding.name != ‘UTF-8’ y = y.encode(‘UTF-8’) end end y.match(/(.*)/u) => #<MatchData "bar” 1:”bar”> 然而,这对我来说有点尴尬,我想问一下是否有更好的方法。

Ruby Regex捕获两个字符串之间的所有内容(包括)

我正在尝试清理一些HTML并删除一个标签(我真的想避免使用nokogiri等)。 所以我有以下字符串出现我想要摆脱: Some junk here that’s different every time 这在我的字符串中只显示一次,我想找到一种方法将其删除。 我已经尝试用正则表达式来捕获它,但我找不到一个有效的。 我已经尝试/ (.*)/m这样/ (.*)/m ,但它也会匹配并包含文档中的任何其他 标记,我不想要。 关于如何处理这个的任何想法?

什么是Ruby正则表达式中的’?-mix’

只是试图在ruby中调试正则表达式。 当我打印正则表达式的内容时,它?-mix在正则表达式的开头显示?-mix ,即使这些字符不是表达式的一部分。 请参阅以下IRB输出以查看此图示 irb(main):028:0* EXPR = /^a$/ => /^a$/ irb(main):029:0> EXPR => /^a$/ irb(main):030:0> puts EXPR (?-mix:^a$) => nil 正如您所看到的,当您使用puts打印出正则表达式的内容时,开头就有?-mix 。 我应该担心吗? 它来自哪里?

ruby regex:匹配并获得位置

我想匹配正则表达式并获得匹配字符串中的位置 例如, “AustinTexasDallasTexas”.match_with_posn /(Texas)/ 我想match_with_posn返回类似的东西: [6, 17] match_with_posn [6, 17]其中6和17是德克萨斯这两个实例的起始位置。 有这样的吗?

如何匹配不在两个特殊字符之间的正则表达式?

我有一个像这样的字符串: abcab“ab”ba“a” 如何匹配每个不是由” ? “分隔的字符串的一部分?我希望匹配这里粗体的所有内容: a bc a b“ab”b a “a” 我想替换那些匹配(或者更确切地通过用空字符串替换它们来删除它们),因此删除引用的部分以进行匹配将不起作用,因为我希望它们保留在字符串中。 我正在使用Ruby。

正则表达式匹配日期

我希望匹配日期格式为mm / dd / yy或mm / dd / yyyy,但它不应该选择23/09/2010,其中月份为23,这是无效的,也没有一些无效的日期,如00/12/2020或12/00 / 2011。

如何在正则表达式中使用双括号?

双方括号在正则表达式中意味着什么? 我对以下示例感到困惑: /[[^abc]]/ /[^abc]/ 我正在使用Rubular进行测试,但我发现双支架和单支架之间没有任何区别。