ruby 正则表达式扫描与 =~

2024-06-07

Ruby (1.9.3) 文档似乎暗示 scan 等同于 =~ 除了

  1. scan 返回多个匹配项,而 =~ 仅返回第一个匹配项,并且
  2. scan 返回匹配数据,而 =~ 返回索引。

但是,在下面的示例中,这两种方法似乎对相同的字符串和表达式返回不同的结果。这是为什么?

1.9.3p0 :002 > str = "Perl and Python - the two languages"
 => "Perl and Python - the two languages" 
1.9.3p0 :008 > exp = /P(erl|ython)/
 => /P(erl|ython)/ 
1.9.3p0 :009 > str =~ exp
 => 0 
1.9.3p0 :010 > str.scan exp
 => [["erl"], ["ython"]] 

如果第一个匹配的索引是 0,扫描不应该返回“Perl”和“Python”而不是“erl”和“python”吗?

Thanks


当给定一个不捕获组的正则表达式时,scan将返回一个字符串数组,其中每个字符串代表正则表达式的匹配。如果你使用scan(/P(?:erl|ython)/)(这与你的正则表达式相同,除了没有捕获组),你会得到["Perl", "Python"],这正是您所期望的。

然而,当给定带有捕获组的正则表达式时,scan将返回一个数组数组,其中每个子数组包含给定匹配的捕获。所以如果你有例如正则表达式(\w*):(\w*),您将得到一个数组数组,其中每个子数组包含两个字符串:冒号之前的部分和冒号之后的部分。在您的示例中,每个子数组都包含一个字符串:匹配的部分(erl|ython).

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ruby 正则表达式扫描与 =~ 的相关文章

  • 如何在 javascript 中用正则表达式替换特殊字符?

    我需要替换字符串中的特殊字符 如下所示 this value this value replace n g 除了正则表达式部分之外 我需要它来查找opposite所有这些 0 9 查找 0 到 9 中的任意数字 A Z 查找从大写 A 到大
  • 在 Ruby 中生成正则表达式模式的字符串

    在Python语言中我发现rstr https bitbucket org leapfrogdevelopment rstr 可以生成一个字符串regex http en wikipedia org wiki Regular express
  • 正则表达式匹配句尾标记[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我需要匹配所有句末符号 例如 句点 等在给定的文本正文中 任何人都可以帮我解决正则表达式来做这样的事情吗 输入示例 This is t
  • Hashie::Mash 从字符串恢复

    我在这个问题上很挣扎 我已经存储了一个Hashie Mash到一个字符串中 我很难将其恢复为哈希值 这是字符串 map Hashie Mash ncreated at Mon Jul 30 15 42 20 0000 2012 nid 22
  • 剥掉所有的身体标签而不毁掉他们的孩子

    此 Ruby 代码使用Nokogiri http nokogiri org doc xpath tbody remove 删除 的子项 tbody 以及 tbody 他们自己 我只想删除所有 tbody 文档中的标签 将其子项留在原处 我怎
  • 使用 authlogic-oauth2 服务器无法启动

    我已将 oauth2 和 authlogic oauth2 包含在 gemfile 中 因为我想使用它们并尝试启动服务器 它没有启动并给我错误 Library Ruby Gems 1 8 gems railties 3 0 3 lib ra
  • 如何从 Sinatra 中删除路线?

    我有一些动态加载的插件 它们在启动时注册它们的路由 但是我还需要能够在禁用它们时删除它们的路由 有没有办法删除现有的路线 API 没有任何我能找到的方法来删除它们 我能想到的唯一其他方法就是直接访问 Sinatra Base 中的 rout
  • 为什么 ruby​​ 与字符串数组并行赋值返回字符串

    我不确定下面的代码片段到底发生了什么 gt gt a b ho hey gt ho hey gt gt a gt ho gt gt b gt hey gt gt c d foo bar gt foo bar gt gt c gt foo g
  • 可以使用带有
     的 CodeIgniter 输出压缩来显示代码块吗?				
    			

    是否可以排除 pre 来自此代码点火器压缩挂钩的标签 我不太了解正则表达式 因此不会破坏我的页面 我试过了 但它总是会提高输出 EDIT 此 CodeIgniter 压缩挂钩会去除代码中所有未指定的空格和格式 以压缩输出 包括 pre 依赖
  • 替换文本区域的文字

    我制作了一个 javascript 函数来将文本区域中的某些单词替换为其他单词 但它不起作用 我做了这个 function wordCheck var text document getElementById eC value var ne
  • Heroku: PG::ConnectionBad: 无法连接到服务器: 连接被拒绝

    我尝试将新应用程序推送到 heroku 并出现此错误PG ConnectionBad could not connect to server Connection refused 这是我的 gemfile 与此有关系吗 我正在使用 spre
  • Rails:构建涉及多态关联和 STI 的查询

    我正在尝试查找有关照片的 10 条最新评论 以便将它们集成到我的 Rails 3 0 3 应用程序上的活动提要中 我有一个Photo模型 它继承自Upload使用单表继承的模型 class Upload lt ActiveRecord Ba
  • 如何从用户提供的包含正则表达式元字符的字符串创建正则表达式?

    我需要使用创建正则表达式regexcrate 包含一个作为命令行参数传递给程序的字符串 命令行参数可以包含 and 如果我将字符串硬编码为r 那么它工作正常 但是如果我使用命令行参数作为format r arg str 我收到以下错误 假设
  • 在 Ruby 中显示 HTTP 请求的标头和正文

    我确信这很容易 但我进行了相当广泛的搜索 但无法找到答案 我正在使用Net HttpRuby 中的库 我想弄清楚如何显示 HTTP GET 请求的完整正文 像下面这样 GET really long path index html q fo
  • Rails 5+ 中 OO/Table 继承(即 STI、MTI、CLI)的可能解决方案是什么?

    这些是我看到的可以帮助解决 Rails 5 对象关系阻抗以及如何构造多个继承的类 表 https stackoverflow com questions 39524488 rails 5 object relation impedance
  • Ruby 中有内置的惰性哈希吗?

    我需要用各种值填充哈希 有些值被经常访问 而另一些值则很少被访问 问题是 我使用一些计算来获取值 并且使用多个键填充哈希变得非常慢 在我的情况下 使用某种缓存不是一个选择 我想知道如何使哈希仅在第一次访问密钥时计算值 而不是在添加密钥时计算
  • Ruby 的编号全局变量是什么

    Ruby 中的值 1 2 是什么意思 它们是从最近的模式匹配中捕获的 就像在 Perl 中一样 Ruby 最初从 Perl 中借鉴了很多语法 尽管现在它基本上已经克服了它 1 2等引用正则表达式中带括号的捕获 给定 a b c 1将是之间的
  • 使用 Ruby 将 CSV 导出到 Excel 的最简单方法是什么?

    我为此使用 Ruby 1 9 我需要将 Ruby 数组转换为 Excel 电子表格文档 xls 我使用两个 gem 导出为 Excel 可读格式 电子表格 http spreadsheet rubyforge org index html
  • Ruby:如何将文件保存为 UTF-16 Little Endian

    我想用UTF 16 Little Endian将 保存到txt文件中 我通过一些方式进行了测试 1 下面的编码是UTF 8 RegisterMark 174 pack U file File new C Output txt w file
  • 友好 ID 自定义 Slug

    我有一个邮政模型 post rb extend FriendlyId friendly id slug candidates use slugged history 我正在尝试像这样自定义每个帖子的网址 post rb def slug c

随机推荐

  • 无法通过新的 Android 资源目录在 Android Studio 中创建布局文件夹(错误:输入或选择限定符)

    Step 1 右键单击res文件夹 选择New gt Android资源目录 Step 2 选择layout在资源类型中 然后单击OK Result 名称错误 输入或选择限定符 菜单类型不会发生这种情况 我错过了什么吗 我必须创建目录 这是
  • XML 架构:我可以使某些属性的值成为必需的,但仍允许使用其他值吗?

    注意 我无法更改收到的 XML 的结构 我只能更改验证它的方式 假设我可以像这样获取 XML
  • 使用 Java 连接到 MySql - SSL 连接

    我一直在尝试连接到 MySql 数据库 该数据库使用 ssl 连接与 java 并遇到麻烦 如果任何人可以帮助我 将会有很大的帮助 手动连接MySql 我们使用MySQL Workbench 参数 主机名 test db1 ro xxxxx
  • 对 Views 和 Pathauto 如何协同工作有基本的了解

    我在理解何时使用 pathauto 规则以及何时使用视图页面路径时遇到了基本问题 我有几种自定义内容类型 并且我使用块来显示某些路径上节点的某些部分 然后我使用视图页面来显示路径上的主节点 当我这样做时 我无法使用 pathauto 因为它
  • vb.net中如何读取串口数据?

    我创建了一个类 有一个名为 SendUSSD 的子类 当调用它时 它会向连接 gsm 手机的 COM 端口发送一个 ussd 代码 如 123 此 usd 应该返回移动余额 If IsOpen True Then checks if the
  • 为什么 z-index 对 div 不起作用?

    我试图让我的页脚显示在页脚背景的顶部 但 z index 似乎不起作用 有人看出它有什么问题吗 http jsfiddle net f2ySC http jsfiddle net f2ySC 你必须明确地定义position财产 foote
  • 调用 Thread.start() 时,happens-before 是否具有传递性?

    假设我们有一堂课 class Foo int x Foo x 5 和一些客户端代码 public static void main String args Foo foo new Foo new Thread gt while true n
  • 角度斜线被编码

    我和这个人有同样的问题 angularjs slash after hashbang gets encoded https stackoverflow com questions 17530924 angularjs slash after
  • 检测滚动条是否可见(例如在移动设备上)

    我见过很多关于检测 HTML 元素是否可滚动的问题 答案 例如动态检测滚动条 https stackoverflow com questions 33805052 detect scrollbar dynamically 我需要类似的东西
  • golang导入结构体指针

    好的 我有一个主包和一个 http 处理程序包 本质上我想做的是设置一个全局结构 这样我就可以随时调用该结构中的信息 我尝试的示例的基本概要如下 主包导入处理函数 主包调用handlerfunc Handlerfunc 将 http Res
  • 自定义扩展未显示在实验实例中

    我创建了一个 VSIX 扩展 它显示在 Visual Studio 2010 中并且按设计工作 但是 我正在尝试构建一些依赖于此扩展的 Visual Studio 自动化 尽管它存在于我正在构建自动化包的项目中 但当我运行包项目时 Visu
  • 如何将 PyTTSx 的输出保存到 wav 文件

    我正在尝试找到为什么我的代码无法正常工作的解决方案 我使用的解决方案来自在 Python 中将合成的文本转语音记录到文件中 https stackoverflow com questions 9900137 recording synthe
  • Chrome 中的混合混合模式问题

    我一直在尝试在包含 css 不透明度过渡实例的页面上使用混合混合模式 似乎正在发生的情况是 包含 mix blend mode 的 div 在过渡期间 或者更确切地说 在动画进行过程中 显示得与没有混合模式时一样 我只发现这是 Chrome
  • Azure 忽略 ARM 模板中的站点配置设置

    我正在尝试开发用于部署多个 Web 应用程序的 ARM 模板 但我在尝试使用 Microsoft Web sites config 中提供的设置来配置 Web 应用程序时遇到困难 无论我在那里输入什么 当我部署 web 应用程序时 这些设置
  • 使用 Spring Boot 的多个 Rabbitmq 队列

    来自 Spring Boot 教程 https spring io guides gs messaging rabbitmq https spring io guides gs messaging rabbitmq 他们给出了创建 1 个队
  • 我可以在 WinForms 中的 PictureBox 上创建透明背景吗?

    我想做一个背景PictureBox控制透明 在里面PictureBox 矩形 我放置了一个图标 圆形 我想让图标透明 以便图标下方的其他部分可见 我尝试过设置PictureBox BackColor属性设置为 透明 但不起作用 我还尝试在运
  • Symfony2 - 多种形式的主题

    有没有办法在同一页面上的两个 或多个 表单使用不同的主题 我有 2 个表单 我想对第一个表单使用主题 X 对第二个表单使用主题 Y 您需要在显示表单之前声明您的主题 你应该试试 form theme form ThemeX html twi
  • 使用示例代码继续在 ggplot2 中遇到错误“loop_apply”未从当前命名空间(plyr)解析”

    我今天一直遇到这个错误 我已经从 github 下载了 plyr 但它仍然不起作用 安装 plyr 后 我重新启动了 R studio 甚至我的电脑 看来问题可能是由于 R 解析对外部 DLL 的引用的方式发生了变化 正如线程中途提到的he
  • 球衣中的注释继承

    我正在创建一些具有相同形式的资源类 因此一个好主意是使用 DRY 并使用继承 所以我创建了一个 RootResource 类并在其中放置了一些方法 我想注释它们 然后在子类中实现它们 但它不起作用 这是示例代码 public abstrac
  • ruby 正则表达式扫描与 =~

    Ruby 1 9 3 文档似乎暗示 scan 等同于 除了 scan 返回多个匹配项 而 仅返回第一个匹配项 并且 scan 返回匹配数据 而 返回索引 但是 在下面的示例中 这两种方法似乎对相同的字符串和表达式返回不同的结果 这是为什么