正则真的好用,平时工作用正则最多的地方就是在编辑器里做查找替换,之前系统学习了一段时间的正则但有些技巧长时间不用有些生疏了,现在重新捡起来顺便记录一下。
基本的替换操作
ctrl+h可以唤出替换界面,选定.*可以开启正则匹配模式,在上面那行输入正则表达式,下面那行输入替换字符串
括号匹配示例
示例将字符串顺序交换
字符串:example = test
正则表达式: (\w+)\s*=\s*(\w+)
替换表达式:$2 = $1
说明:用括号包含的子表达式会按照顺序被匹配为$n
非捕获型括号
如果只是想用括号分组但不用括号匹配可以用 (?:)来包含,示例如下:
字符串:test_aasdfasdfasdfaseifansefi
正则表达式:(?:test_(\w+))
这样$1会匹配的是 “test_” 后面的一串,而不会匹配整个字符串
环视
类型 | 正则表达式 | 匹配成功的条件 |
---|---|---|
肯定逆序环视 | (?<=…) | 子表达式能够匹配左侧文本 |
否定逆序环视 | (?<!..) | 子表达式不能匹配左侧文本 |
肯定顺序环视 | (?=…) | 子表达式能够匹配右侧文本 |
否定顺序环视 | (?!..) | 子表达式不能匹配右侧文本 |
示例:
字符串:test_aaa
正则表达式: (?=test_(\w+))
替换表达式:$1
结果:aaatest_test
说明:环视匹配的是位置而不是字符串,环视不会占用字符,上面示例匹配到了字符串左侧的位置,而$1匹配到的是"aaa"
示例:
[17011] = [[{17011, “测试测试”, 14000
[17011] = [[{17011, “测试测试”, 17011
\[(\d+)\] = \[\[\{\1, "[^,]+", (?!\1) 匹配第一个
\[(\d+)\] = \[\[\{\1, "[^,]+", \1 匹配第二个
if then else条件判断
表达式:((if)then|else)
字符串:
num:1141244
world:example
正则表达式:(?<=num:)(\d+)|(example)
这里其实用的就是环视判断出位置,来模拟if条件。
更多推荐
vscode里使用正则表达式
发布评论