gpt4 book ai didi

regex - [\s\S] 与 . (点)?

转载 作者:行者123 更新时间:2023-12-03 16:05:20 26 4
gpt4 key购买 nike

当我们在同一个字符类中包含字符类和否定字符类的速记时,是否与点 相同. 这意味着任何字符?

我在 regex101.com 上做了一个测试并且每个字符都匹配。

[\s\S] [\w\W][\d\D]. ?

我想知道这种行为是否在 Web 的前端和后端语言(如 Javascript、Php、Python 等)中持续存在。

最佳答案

“不”不一样。如果您不使用 single line,则有一个重要的区别。标志(意味着 . 不匹配所有)。
[\s\S]当您想进行混合搭配时,. 会派上用场不匹配所有。

用一个例子来解释它更容易。假设您想捕获 a 之间的任何内容和 b ,所以你可以使用模式 a(.*?)b ( ? 用于非贪婪匹配和用于捕获内容的括号),但是如果有新行,假设您不想在同一组中捕获它,因此您可以使用另一个正则表达式,如 a([\s\S]*?)b .

因此,如果我们使用两种方法创建一种模式,则会导致:

a(.*)b|a([\s\S]*?)b

enter image description here

在这种情况下,如果您看到 scenario in regex101 ,那么您将有一种丰富多彩且简单的方法来区分场景(在绿色捕获组 #1 和红色捕获组 #2 中):
enter image description here

所以,总而言之, [\s\S]当您想匹配多行和 . 时,这是一个正则表达式技巧。不适合您的需求。这基本上取决于您的用例。

但是,如果您使用 single line标志在哪里 .匹配新行,那么你就不需要正则表达式了,下面你可以看到都是绿色的,第 2 组(上面的红色)不匹配: enter image description here

还创建了一个 javascript 性能测试,它对性能的影响约为 25%:

https://jsperf.com/ss-vs-dot

enter image description here

关于regex - [\s\S] 与 . (点)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44246215/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com