这些正则表达式之间的区别是什么?

What's the difference between these regexes

本文关键字:区别 是什么 之间 正则表达式      更新时间:2023-09-26

我正在阅读Ionic的源代码。我遇到了这个正则表达式,我很困惑。

(['s'S]+?)

好的,它对每个字符进行分组,无论是空白还是非空白??

他们为什么不直接做呢

(.+?)

我错过了什么吗?

.匹配除换行符以外的任何符号。为了使它与换行符匹配,在大多数语言中都有一个修饰符(点高,单行)。然而,在JS中,没有这样的修饰符。

因此,一个解决方法是使用['s'S]字符类,它将匹配任何字符,包括换行符,因为's将匹配所有空白字符,而'S将匹配所有非空白字符。同样,可以使用['d'D]['w'W]

同样,在JS中有一个[^]模式来匹配相同的东西,但由于它是javascript特定的,包含该模式的正则表达式不能在不同的正则表达式之间移植。

+?惰性限定词匹配符合前一子模式的1个或多个符号,但尽可能少。因此,如果像这样使用,它将只匹配一个符号,在模式的末尾。

在许多Regexp实现中,"."不匹配新行。所以他们用"['s' s]"作为一个小技巧=)

.匹配除换行符以外的所有字符。这实际上是javascript中一个众所周知的问题。's(空白匹配)与其否定'S(非空白匹配)一起提供了包括换行符在内的dotall匹配。因此,['s'S]通常比.使用得更频繁

他们使用的RegEx包含更多字符(基本上是所有字符)。

's匹配任何单词或数字字符或空白。

'S匹配除数字、字字符或空格以外的任何内容

正如Casimir所说:

.匹配除换行符('n)以外的任何字符

.匹配任何字符,除了回车/r和换行/n

[/s/S](空白和非空白)的最短方法是[^](不是没有)