Rah*_*hul 5 regex regex-negation character-class
当我们在同一个字符类中包含字符类和否定字符类的速记时,它是否与 dot 相同。这意味着任何字符?
我在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
Run Code Online (Sandbox Code Playgroud)
在这种情况下,如果您在 regex101 中看到场景,那么您将有一种丰富多彩且简单的方法来区分场景(在绿色捕获组 #1 和红色捕获组 #2 中):

因此,总而言之,[\s\S]当您想要匹配多行并且.不适合您的需求时,这是一个正则表达式技巧。这基本上取决于您的用例。
但是,如果您使用匹配新行的single line标志.,那么您不需要正则表达式技巧,在下面您可以看到全部为绿色并且第 2 组(上面的红色)不匹配:
还创建了一个 javascript 性能测试,它对性能的影响约为 25%:
| 归档时间: |
|
| 查看次数: |
1030 次 |
| 最近记录: |