修改器支持的正则表达式如何使用
修改器及其功能
1. PCRE_CASELESS:不区分大小写匹配,对应Perl的/i。
2. PCRE_MULTILINE:多行匹配,对应Perl的/m。
3. PCRE_DOTALL:点号匹配新行,对应Perl的/s。
4. PCRE_DOLLAR_ENDONLY:$仅在结尾匹配,无对应Perl修改器。
5. PCRE_EXTRA:严格解析转义字符,无对应Perl修改器。
6. PCRE_EXTENDED:忽略空白字符,对应Perl的/x。
7. PCRE_UTF8:处理UTF8字符,内置支持。
8. PCRE_UNGREEDY:反转和?,无对应Perl修改器。
9. PCRE_NO_AUTO_CAPTURE:禁用捕获括号,无对应Perl修改器。
使用方法
对于每个修改器,提供了两个成员函数,其名称由修改器的小写形式组成,不带"PCRE_"前缀。例如,PCRE_CASELESS由`caseless`和`set_caseless(bool)`处理。
`PCRE_EXTRA_MATCH_LIMIT`可以通过`set_match_limit`和`match_limit`成员函数访问。设置`match_limit`为非零值可以限制pcre的执行,防止其导致堆栈溢出或长时间返回结果。例如,将`match_limit`设置为5000可以防止2MB线程堆栈的堆栈溢出。将`match_limit`设置为零可以禁用匹配限制。或者,可以调用`match_limit_recursion`,它使用`PCRE_EXTRA_MATCH_LIMIT_RECURSION`来限制PCRE的递归深度。`match_limit`限制了PCRE执行的匹配数量;`match_limit_recursion`限制了内部递归的深度,从而限制了使用的堆栈量。
示例
EmEditor中的正则表达式使用
在EmEditor中使用正则表达式时,需要在查找和替换窗口中勾选“使用正则表达式”选项。以下是一些具体的示例:
1. 查找<>之间的字符串:
查找:`<.?>`
替换为:(根据需要替换的内容)
2. 查找双引号之间的字符串:
查找:`".?"`
替换为:(根据需要替换的内容)
3. 包含特定字符的字符串:
查找:`$$[^$$]?$$
替换为:(根据需要替换的内容)
4. 变量名:
查找:`[a-zA-Z_][a-zA-Z_0-9]`
替换为:(根据需要替换的内容)
5. IP地址:
查找:`([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3})`
替换为:(根据需要替换的内容)
6. 各行Tab以后的文字列:
查找:`
$`
替换为:(根据需要替换的内容)
7. 删除行头:
查找:`^(//)`
替换为:(留空以删除)
8. 删除行后的空白文字:
查找:`s+?$`
替换为:(留空以删除)
9. 替换特定模式:
查找:`(abc)`
替换为:`[abc]`
10. 将字母a-z替换为大写字母:
查找:`U0`
替换为:(留空以转换)
11. 首字母大写:
查找:`U1L2`
替换为:(留空以转换)
EditPlus中的正则表达式使用
在EditPlus中使用正则表达式时,需要在替换对话框中勾选“正则表达式”复选框。以下是一些具体的示例:
1. 删除空行:
查找:`^[
]
替换为:(留空以删除)
2. 替换指定内容到行尾:
查找:`abc.`
替换为:`abc efg`
3. 数字替换:
查找:`[0-9][0-9][0-9]`
替换为:`[012]`
4. 删除每一行行尾的指定字符:
查找:`345content`
替换为:`content`
5. 替换带有半角括号的多行代码:
查找:`^
替换为:(根据需要替换的内容)
表格总结
| 修改器 | 功能描述 | 对应Perl修改器 |
|-----------------------|-----------------------------------------------|----------------|
| PCRE_CASELESS | 不区分大小写匹配 | /i |
| PCRE_MULTILINE | 多行匹配 | /m |
| PCRE_DOTALL | 点号匹配新行 | /s |
| PCRE_DOLLAR_ENDONLY | $仅在结尾匹配 | 无 |
| PCRE_EXTRA | 严格解析转义字符 | 无 |
| PCRE_EXTENDED | 忽略空白字符 | /x |
| PCRE_UTF8 | 处理UTF8字符 | 内置支持 |
| PCRE_UNGREEDY | 反转和?| 无 |
| PCRE_NO_AUTO_CAPTURE | 禁用捕获括号 | 无 |
通过以上信息,您可以更好地理解和使用支持的正则表达式修改器。
上一篇:修改器如何提升游戏的可玩性 下一篇:修改器的未来发展趋势是什么