当前位置: 首页 > 面试题库 >

为什么正则表达式匹配在nodejs中返回比正常更多的返回值?

能翔宇
2023-03-14
问题内容

如果我在节点repl中执行此指令

"hello".match(/(\w+)(.*)/)

它返回

[ 'hello',
  'hello',
  '',
  index: 0,
  input: 'hello' ]

我希望它返回前三个项目,其他值从何而来?


问题答案:
  • 数组中的第一项是整个正则表达式匹配项(“组0”)。那hello当然是。
  • 第二项是第一个捕获组的match的内容(\w+)。这是hello又响了。
  • 第三项是第二个捕获组的match的内容(.*)。那是之后的空字符串hello
  • index 是比赛开始的位置-这是字符串的第一个字符。
  • input向您显示执行regex的字符串,即hello

很难找到关于此的文档(至少对我而言),但这是MSDN上描述正则表达式匹配返回的对象的内容:http : //msdn.microsoft.com/zh-
cn/library/ie/7df7sf4x( v = vs.94).aspx

如果未设置全局标志,则match方法返回的数组具有两个属性,inputindex。该input属性包含整个搜索的字符串。该index属性包含匹配的子字符串在完整搜索的字符串中的位置。



 类似资料:
  • 问题内容: 我不明白为什么这个简单的正则表达式匹配不返回匹配对象。它返回None我在做什么错? 我完全是newby(昨天开始),想编写一个小程序来搜索文件夹树中的某些文件,打开这些文件并在这些文件中找到某些行,然后将这些行打印到一个新文件中。为了完成第一步,我想匹配os.walk返回的文件名,并使用某种模式进行匹配。因此,现在我正在检查正则表达式的工作方式,并且据我所知,以下代码应该匹配,但是当我

  • 我有一个字符串表达式,需要从中获取一些值。字符串如下所示 从这个stribg中,我需要获取一个字符串数组列表,其中包含“example ple1”、“example ple2”等值。 我有一个Java的方法如下所示: 但<code>m。find()总是返回<code>false。我缺少什么吗?

  • 问题内容: 这种模式仅意味着将字符串中的所有内容抓取到数据中第一个潜在句子边界为止: 输出: 从Python文档中: re.findall(模式,字符串,标志= 0) 返回字符串中模式的所有非重叠匹配项,作为字符串列表。从左到右扫描字符串,并以找到的顺序返回匹配项。如果模式中存在一个或多个组,则返回一个组列表;否则,返回一个列表。如果模式包含多个组,则这将是一个元组列表。空匹配项将包括在结果中,除

  • 问题内容: import re >>> s = ‘this is a test’ >>> reg1 = re.compile(‘test$’) >>> match1 = reg1.match(s) >>> print match1 None 在Kiki中与s末尾的测试匹配。我想念什么?(我也尝试过) 问题答案: 采用 代替。该函数 仅 在字符串的开头匹配。请参见此处的文档: Python提供了两种

  • 问题内容: 我想获得正则表达式的第一场比赛。 在这种情况下,我得到了一个列表: [‘33’,‘44’] 我可以提取列表的第一个元素: ‘33’ 但这仅在至少有一个匹配项的情况下有效,否则我将收到错误消息: IndexError:列表索引超出范围 在这种情况下,我可以定义一个函数: 是否有一种无需定义新功能即可获得该结果的方法? 问题答案: 您可以通过添加默认值到您的正则表达式中: 也可以与其他人指

  • 问题内容: 使用Python正则表达式如何获得/返回?所有Python回报是: 问题答案: 对象始终为true,如果不匹配,则返回。只是测试真实性。