正则表达式中的模式修正符(也称为标志或修饰符)是用来改变正则表达式搜索行为的一种方式。它们通常放在正则表达式的末尾,并以特定的字符表示。不同的编程语言可能支持不同的模式修正符,但一些是广泛支持的。下面是一些常见的模式修正符及其用途:
1. **`i`(忽略大小写)**:
使正则表达式在匹配时不区分大小写。
**示例**:`/hello/i` 可以匹配 "Hello", "hello", "HELLO" 等。
2. **`m`(多行模式)**:
使 `^` 和 `$` 匹配输入字符串的开始和结束位置,以及每一行的开始和结束位置(不仅仅是整个字符串的开始和结束)。
**示例**:在 `"hello\nworld"` 上使用 `/^world$/m` 会匹配失败,但 `/^world/m` 会匹配成功(尽管 `world` 不是在字符串的开始)。
3. **`s`(单行模式/点号通配换行)**:
使 `.` 匹配包括换行符在内的任何字符。默认情况下,`.` 不匹配换行符。
**示例**:`/hello.world/s` 在 `"hello\nworld"` 上会匹配成功。
4. **`g`(全局搜索)**:
进行全局匹配,而不仅仅是第一个匹配项。
**示例**:在 `"hello world hello universe"` 上使用 `/hello/g` 会匹配到两个 "hello"。
5. **`u`(Unicode 匹配模式)**:
在支持 Unicode 的环境中,使 `.`、`\w`、`\W`、`\d`、`\D`、`\s` 和 `\S` 匹配整个 Unicode 字符集,而不仅仅是 ASCII 字符集。
**示例**:`/你好/u` 在包含中文字符的字符串上能够正确匹配。
6. **`x`(自由间隔模式/忽略空白)**:
允许在正则表达式中使用空白字符(如空格和制表符)来提高可读性,同时忽略这些空白字符。注意,在 `#` 字符后开始的注释也会被忽略。
**示例**:`/hello # 这是一个注释
world/x` 相当于 `/helloworld/`。
请注意,不同的编程语言和正则表达式库可能支持不同的模式修正符集合。上述是一些最常见的模式修正符,但在使用时请参考您所使用的具体环境的文档。