程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了正则表达式问题:/.../ 和 /(...)/ 之间有什么区别?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_450_0@如何解决正则表达式问题:/.../ 和 /(...)/ 之间有什么区别?? 开发过程中遇到正则表达式问题:/.../ 和 /(...)/ 之间有什么区别?的问题如何解决?下面主要结合日常开发的经验,给出你关于正则表达式问题:/.../ 和 /(...)/ 之间有什么区别?的解决方法建议,希望对你解决正则表达式问题:/.../ 和 /(...)/ 之间有什么区别?有所启发或帮助;

看看下面的代码(在 Ruby 中),为什么第一个实例在从字符串形成数组时拒绝空格,而在第二个实例中它保留空格?基本上,我在问正则表达式中 /.../ 和 /(...)/ 之间的区别是什么。

str = 'The quick brown fox jumps over the lazy dog.'

print str.split(/\s+/)
#["The","quick","brown","fox","jumps","over","the","lazy","dog."]

print str.split(/(\s+)/)
#["The"," ","dog."]
@H_450_0@解决方法

我认为您想解释以下区别:

print str.split(/\s+/)    # split on whitespace and consume it
print str.split(/(\s+)/)  # split on whitespace and capture it

在第一种情况下,我们对空格进行拆分,这些空格字符被消耗,这意味着它们不会出现在输出数组中。这仅留下非空白词。另一方面,在第二个版本中,我们通过使(\s+) 使分割空白成为捕获组。因此,这些捕获的空白字符会进入输出。因此,我们将所有非空白组和空白组视为输出数组中单独的有序条目。

,

通常,正则表达式部分周围的括号捕获与正则表达式的该部分匹配的文本部分,以供稍后在正则表达式或匹配后的代码中使用。

例:"foofoo".match(/(.*)\1/) 为真,因为它包含重复的字符串; \1 的意思是“任何匹配该模式第一组括号之间的部分”。在这种情况下,括号之间的 .* 匹配“foo”,而 \1 匹配“foo”的第二个副本。

但是 split 是不同的;它匹配了很多次并且没有任何地方可以放置括号中的组捕获的文本。因此,括号告诉它在结果数组中保留分隔符。这样,如果被拆分的正则表达式可以匹配多个字符,您就可以找出每个位置是哪个。

 # no capture,nothing kept; nothing in the array to tell - from,'1-2,3'.split(/[-,]/) #=> ["1","2","3"]

 # with capture,include delimiters; now array tells me which separators used
'1-2,3'.split(/([-,])/) #["1","-",","3"]

这是从 Perl、FWIW 继承的另一个行为示例。

大佬总结

以上是大佬教程为你收集整理的正则表达式问题:/.../ 和 /(...)/ 之间有什么区别?全部内容,希望文章能够帮你解决正则表达式问题:/.../ 和 /(...)/ 之间有什么区别?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。