为什么正则表达式可以在javascript中工作,但不能在ruby中工作?

伊戈尔·奥利维拉·安东尼奥
text = 'http://www.site.info www.escola.ninja.br google.com.ag'

表达: (http:\/\/)?((www\.)?\w+\.\w{2,}(\.\w{2,})?)

在Javascript中,此表达式有效,返回:

["http://www.site.info", "www.escola.ninja.br", "google.com.ag"]

为什么它不能在红宝石中工作?

例如:

  1. 使用Match方法:

    p text.match(/(http:\/\/)?(www\.)?\w+\.\w{2,}(\.\w{2})?/)
    #<MatchData "http://www.site.info" 1:"http://" 2:"www." 3:nil>
    
  2. 使用扫描方法:

    p text.scan(/(http:\/\/)?(www\.)?\w+\.\w{2,}(\.\w{2})?/)
    [["http://", "www.", nil], [nil, "www.", ".br"], [nil, nil, ".ag"]]
    

我该如何返回以下数组?

["http://www.site.info", "www.escola.ninja.br", "google.com.ag"]
维克多·史翠比维

原因是str.match(/regex/g)在JS中不保留捕获的子字符串,请参阅MDNString#match()参考

如果正则表达式包含该g标志,则该方法返回,Array其中包含所有匹配的子字符串而不是匹配的对象。捕获的组不返回。

在Ruby中,您必须修改模式以删除多余的捕获组并将捕获的组转换为非捕获组(即,将unscaped替换((?:),因为否则,只有被捕获的子字符串会通过String#scan方法获得输出

如果模式不包含任何组,则每个单独的结果均由匹配的字符串$&组成。如果模式包含组,则每个单独的结果本身就是一个数组,每个组包含一个条目。

使用

text = 'http://www.site.info www.escola.ninja.br google.com.ag'
puts text.scan(/(?:http:\/\/)?(?:www\.)?\w+\.\w{2,}(?:\.\w{2,})?/)

演示的输出

http://www.site.info
www.escola.ninja.br
google.com.ag

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么我的正则表达式可以在PHP中工作,但不能在JavaScript中工作?

来自分类Dev

正则表达式可以在Pythex上正常工作,但不能在Python中工作

来自分类Dev

为什么我的正则表达式不能在c ++中工作,但可以在Python中工作?

来自分类Dev

为什么此正则表达式在Vim中不能在SublimeText中工作?

来自分类Dev

为什么正则表达式不能在Pywinauto中很好地工作

来自分类Java

为什么此正则表达式不能在Java中按预期工作?

来自分类Dev

正则表达式虽然在Javascript中工作,但不能在C#中工作

来自分类Dev

正则表达式可以工作,但是不能在Python中工作吗?

来自分类Python

正则表达式可在python模拟器中工作,但不能在perl中工作

来自分类Dev

正则表达式可在浏览器中工作,但不能在NodeJ中工作

来自分类Dev

正则表达式搜索可在Notepad ++中工作,但不能在cygwin grep中工作

来自分类Dev

为什么带有捕获组的此正则表达式不能在bash中工作?

来自分类Dev

为什么角度模式正则表达式不能在typecrip中正常工作在html中

来自分类Dev

模块重新正则表达式可以在控制台窗口中按预期工作,但不能在“ eclipse”中工作

来自分类Dev

简单的正则表达式/:[az] + /不能在javascript中按预期工作

来自分类Dev

正则表达式可以在PHP中运行,而不能在Erlang中使用。为什么?

来自分类Dev

正则表达式可以在所有.net引擎中在线工作,而不能在Powershell中工作吗?

来自分类Dev

为什么我的正则表达式不能在C#中工作,而在其他文本编辑器中工作?

来自分类Dev

用多个通配符替换正则表达式可在PHP中工作,而不能在JavaScript中工作

来自分类Dev

为什么此正则表达式在grep中起作用但不能在sed中起作用?

来自分类Dev

为什么htaccess中的此正则表达式不能正常工作?

来自分类Dev

正则表达式为什么不能在PreviewKeyDown上工作?

来自分类Dev

正则表达式可在Shell中工作,但不能通过Perl脚本工作

来自分类Dev

为什么正则表达式不能正常工作?

来自分类Java

为什么我的正则表达式可以在RegexPlanet和regex101上运行,但不能在我的代码中运行?

来自分类Dev

正则表达式不能在asp.net(.aspx页)中工作

来自分类Dev

为什么此正则表达式可以在Ubuntu上通过但不能在Mac OS X上通过

来自分类Dev

为什么正则表达式将在Sublime中工作而不在vim中工作?

来自分类Dev

为什么我不能在命令行的@ARGV中传递正则表达式?

Related 相关文章

  1. 1

    为什么我的正则表达式可以在PHP中工作,但不能在JavaScript中工作?

  2. 2

    正则表达式可以在Pythex上正常工作,但不能在Python中工作

  3. 3

    为什么我的正则表达式不能在c ++中工作,但可以在Python中工作?

  4. 4

    为什么此正则表达式在Vim中不能在SublimeText中工作?

  5. 5

    为什么正则表达式不能在Pywinauto中很好地工作

  6. 6

    为什么此正则表达式不能在Java中按预期工作?

  7. 7

    正则表达式虽然在Javascript中工作,但不能在C#中工作

  8. 8

    正则表达式可以工作,但是不能在Python中工作吗?

  9. 9

    正则表达式可在python模拟器中工作,但不能在perl中工作

  10. 10

    正则表达式可在浏览器中工作,但不能在NodeJ中工作

  11. 11

    正则表达式搜索可在Notepad ++中工作,但不能在cygwin grep中工作

  12. 12

    为什么带有捕获组的此正则表达式不能在bash中工作?

  13. 13

    为什么角度模式正则表达式不能在typecrip中正常工作在html中

  14. 14

    模块重新正则表达式可以在控制台窗口中按预期工作,但不能在“ eclipse”中工作

  15. 15

    简单的正则表达式/:[az] + /不能在javascript中按预期工作

  16. 16

    正则表达式可以在PHP中运行,而不能在Erlang中使用。为什么?

  17. 17

    正则表达式可以在所有.net引擎中在线工作,而不能在Powershell中工作吗?

  18. 18

    为什么我的正则表达式不能在C#中工作,而在其他文本编辑器中工作?

  19. 19

    用多个通配符替换正则表达式可在PHP中工作,而不能在JavaScript中工作

  20. 20

    为什么此正则表达式在grep中起作用但不能在sed中起作用?

  21. 21

    为什么htaccess中的此正则表达式不能正常工作?

  22. 22

    正则表达式为什么不能在PreviewKeyDown上工作?

  23. 23

    正则表达式可在Shell中工作,但不能通过Perl脚本工作

  24. 24

    为什么正则表达式不能正常工作?

  25. 25

    为什么我的正则表达式可以在RegexPlanet和regex101上运行,但不能在我的代码中运行?

  26. 26

    正则表达式不能在asp.net(.aspx页)中工作

  27. 27

    为什么此正则表达式可以在Ubuntu上通过但不能在Mac OS X上通过

  28. 28

    为什么正则表达式将在Sublime中工作而不在vim中工作?

  29. 29

    为什么我不能在命令行的@ARGV中传递正则表达式?

热门标签

归档