首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

史上最全VIM使用手册

+#:打开文件后,直接让光标处于第#行的行首; +/PATTERN:打开文件后,直接让光标处于第一个被PATTERN匹配到的行的行; 模式转换: 编辑模式:默认模式 编辑模式 -> 输入模式: i:insert...; d^:删除光标所在位置到非空行首的字符; d0:删除光标所在位置到行首的字符; dw:删除光标所在位置到下个单词词首的字符 de:删除光标所在位置到当前单词或下个单词词尾的字符 db:删除光标所在位置到当前单词或上一个单词单首的字符...y^:复制光标所在位置到非空行首的字符 y0:复制光标所在位置到行首的字符 ye:复制标所在位置到当前单词或下个单词词尾的字符 yw:复制光标所在位置到下个单词词首的字符 yb...指定行范围,左侧为超始行绝对编号,右侧为相对左侧行号的偏移量;例如:3,+7 .,$-1:范围为当前行指倒数第二行 1,$:范围为第一行至最后一行 %:全文 /pattern/:从光标所在处起始向文件尾部第一次被模式所匹配到的行...; /first/,$:从光标所在处起始,第一次由pat1配到的行开始,至最后一行中间的所有行 /pat1/,/pat2/:从光标所在处起始,第一次由pat1配到的行开始,至第一次由pat2配到的行结束之间的所有行

2.6K10
您找到你想要的搜索结果了吗?
是的
没有找到

java正则表达式解析「建议收藏」

第二条解释,假如我们要从一个html页面中过滤一些css与js的url,那么整个html就是给定的字符串,而css与js的url就是我们想要的特定的部分。...:abc)表示找到这样abc这样一组,但不记录,不保存到变量中,否则可以通过x取第几个括号所匹配到的项,比如:(aaa)(bbb)(ccc)(?...:ddd)(eee),可以用1获取(aaa)匹配到的内容,而3则获取到了(ccc)匹配到的内容,而 方括号是单个匹配,字符集/排除字符集/命名字符集 示例: 1、[0-3],表示找到这一个位置上的字符只能是...^ 匹配输入字符串开始的位置。如果设置了 RegExp 对象的 Multiline 属性,^ 还会与”\n”或”\r”之后的位置匹配。 $ 匹配输入字符串结尾的位置。...注意:您不能将空格插入逗号和数字之间。 ? 当此字符紧随任何其他限定符(*、+、?、{ n}、{ n,}、{ n,m})之后时,匹配模式是”非贪心的”。”

1.1K40

KMP算法(字符串匹配问题)

算法思路: 假如现有两个字符串: String str1 = "BBC ABCDAB ABCDABCDABDE"; String str2 = "ABCDABD"; 假设现在str1配到i位置,str2...配到j位置,则有: 如果当前字符匹配成功,即str1[i] == str2[j],则i++; j++;,继续匹配下一个字符; 如果匹配不成功,即str1[i] !...通过上面的描述可以发现,暴力匹配效率并不高,发现不匹配之后,回到前面第一次匹配的地方,往后移动一位,再开始匹配。每次只移动一位,会有大量回溯。 2....String str1 = "BBC ABCDAB ABCDABCDABDE"; String str2 = "ABCDABD"; 现在要判断str1中是否包含str2,如果包含,返回str2在str1中第一次出现的位置...String str2 = "ABCDABD"; System.out.println(match(str1, str2)); } /** * kmp获取子串在原串中第一次出现的位置

39020

Sed命令的基本使用

比如1,100,表示1-100行 特别注意的是,可以使用$:最后一行 /RegExp/(正则表达式) 比如: /^root/,表示以root开始的行 /pattern1/,/pattern2/ 第一次被...pattern1配到的行开始到被pattern2配到的行结束 LineNumber 指定某行 startLine, +N 从startLine开始向后的N行,总共是N+1行 Commonds sed...将指定的文件的内容添加到匹配的行之后 w FILE:将指定范围内的内容另存到指定的文件中 s /pattern/ReplaceString/修饰符:将符合模式的字符串替换为ReplaceString(默认只替换每行中第一次被模式匹配到的串...) 可以使用三个相同的字符来代替’/’,上面的字符串替换等价于s #pattern#ReplaceString#修饰符 特别的可以使用&:表示整个模式匹配到的字符串 修饰符: g:全局替换 i:

1.1K60

【JavaScript】 基础

使用标签书写 JS 代码 语法 : alert("网页警告框"); 注意 :标签可以书写在文档的任意位置,书写多次...,一旦加载到 script 标签就会立即执行内部的 JS 代码,因此不同的位置会影响代码最终的执行效果 外部链接 创建外部的 JS 文件 XX.js,在 HTML 文档中使用引入 <script...,执行的代码段 break; //结束匹配 case 值2 : //value与值2配全等时,执行的代码段 break; case 值3 : //value与值3配全等时...case用于列出所有可能的值;只有switch()表达式的值与case的值匹配全等时,才会执行case对应的代码段 2. break用于结束匹配,不再向后执行;可以省略,break一旦省略,会从当前匹配到的...:根据元素下标读取或修改数组元素,arr[index] 属性和方法 属性 : length 表示数组长度,可读可写 方法 : push(data) 在数组的末尾添加一个或多个元素,多个元素之间使用逗号隔开

2.1K20

vim 超强编辑器

跳转至下一段 {:跳转至上一段 3. vim的编辑命令: 字符编辑: x:删除光标处的单个字符; #x:删除光标处起始的#个字符; xp:交换光标所在处的字符及其后面字符的位置...: d:删除指定范围的内容 y:复制指定范围的内容 w /PATH/TO/SOMEWHERE:将范围内的行另存至指定文件中; r /PATH/FROM/SOMEFILE:在指定位置插入指定文件中的所有内容...表示起始,到右侧#表示结束; #,+#:从左侧#表示的行开始,加上右侧#表示的行数; .当前行; $:最后一行; %:全文;相当于(1,$) /pat1/,/pat2/:表示从第一次被...pat1配到的行开始,一直到pat2配到的行结束 使用方式: (2)....查找并替换 s/要查找的内容/替换为的内容/修饰符 查找替换中的分隔符/可替换为其它字符,例如: i:忽略大小写 g:全局替换;默认情况下,没一行只替换第一次出现的内容;

69510

linux文本编辑器-VIM基本使用方法

+/PATTERN:打开文件后,直接让光标处于第一个被PATTERN匹配到的行的行首 vim + file 直接打开file,光标在最后一行 三种主要模式:          命令模式:移动光标,剪切粘贴等...扩展模式使用外面命令生成加密字符串读入到文件中 命令模式字符编辑:          x   删除光标处的字符;          #x  删除光标处起始的# 个字符          xp  交换光标所在处的字符及其后面字符的位置...$                    表示最后一行          :%                   表示全文,相当于1,$          /p1,/p2              第一次被...p1配到的行到第一次被p2配到的行 扩展模式字符串查找:          /world      从上向下查找world          ?

91130

正则详解

如果一个子正则匹配的是位置,而不是字符,或者匹配到的内容不保存在结果中(其实也可以看做一个位置),那么这个子表达式是*零宽度的,比如/read(?...read从位置0开始匹配到位置4,后面的(?=ing)继续从位置4开始匹配,发现位置4后面确实是ing,于是断言匹配成功,也就是整一个(?...=ing)就是匹配了位置4这一个位置而已(这里更能理解什么是零宽了吧),然后后面的ing再从位置4开始匹配到位置7,然后\s再从位置7配到位置8,最后的book从位置8配到位置12,整一个匹配完成。...=[aeiou])匹配此处的位置0配成功,控制权交给[a-z]+,从位置0开始匹配,字符串‘apple’中的每个字符都匹配成功,匹配到字符串末尾,控制权交回正则的$,尝试匹配字符串结束位置,成功,至此...分组匹配到的内容也就是这个分组捕获到的内容,从左往右,以左括号为标志,每个分组会自动拥有一个从1开始的编号,编号0的分组对应整个正则表达式,JS不支持捕获组显示命名。

1.5K30

PHP正则表达式

2.最长原则:对于匹配到的目标字符串,正则表达式总是会匹配到符合正则表达式要求的最长的部分;即贪婪模式 那怎么开始呢,首先从分隔符开始写起,常用包括 / ; #;~,用于表明一串正则的开始。...匹配除 “\n” 之外的任何单个字符 • ^ 匹配输入字符串的开始位置。在字符域[]中表示取反,如'[^\w]'等于'\w';而^\w表示以单词字符开头。 • 匹配输入字符串的结束位置。...请注意在逗号和两个数之间不能有空格。 • [] 字符集合(字符域)。匹配所包含的任意一个字符。例如, '[abc]' 可以匹配 "plain" 中的 'a'。...• () 匹配 ()内的内容 并获取这一配。...这是一个非获取匹配,也就是说,该 配不需要获取供以后使用。例如,'Windows (?

4.5K10

网络安全自学篇-PHP代码审计(二)

正则 一、最左原则(非贪婪模式):正则表达式总是从目标字符串的最左侧开始,依次匹配,直到匹配到符合表达式要求的部分,或直到匹配目标字符串的结束 二、最长原则(贪婪模式):对于匹配到的目标字符串,正则表达式总是会匹配到符合正则表达式要求的最长的部分....匹配除 “\n” 之外的任何单个字符 匹配输入字符串的开始位置。在字符域[]中表示取反,如’[\w]‘等于’\w’;而^\w表示以单词字符开头。...请注意在逗号和两个数之间不能有空格。 []字符集合(字符域)。匹配所包含的任意一个字符。例如, ‘[abc]’ 可以匹配 “plain” 中的 ‘a’。 ()匹配 ()内的内容 并获取这一配。...这是一个非获取匹配,也就是说,该 配不需要获取供以后使用。例如,‘Windows (?...预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次 配的搜索,而不是从包含预查的字符之后开始。 (?!

72010

【基础拾遗】编辑器之神-VIM

跳转至上一个句子; 段落间移动: }:跳转至下一段 {:跳转至上一段 3. vim的编辑命令: 字符编辑: x:删除光标处的单个字符; #x:删除光标处起始的#个字符; xp:交换光标所在处的字符及其后面字符的位置...2行; #,#:从左侧#表示起始,到右侧#表示结束; #,+#:从左侧#表示的行开始,加上右侧#表示的行数; .当前行; $:最后一行; %:全文;相当于(1,$) /pat1/,/pat2/:表示从第一次被...pat1配到的行开始,一直到pat2配到的行结束 使用方式: 后跟一个编辑命令: d:删除指定范围的内容 y:复制指定范围的内容 w /PATH/TO/SOMEWHERE:将范围内的行另存至指定文件中...; r /PATH/FROM/SOMEFILE:在指定位置插入指定文件中的所有内容; (2)....可使用模式; 替换为的内容:不能使用模式,但可以使用\1, \2, …等后向引用符号;好可以使用"&"引用前面查找时查找到的整个内容; 修饰符: i:忽略大小写 g:全局替换;默认情况下,没一行只替换第一次出现的内容

1.2K50

【C 语言】二级指针案例 ( 多级指针内存释放问题 | 多级指针避免野指针 )

free(p); } // 将最终的 三维指针 指向的 二维指针 置空 *str = NULL; } 2、分配内存出错处理情况 为 多级指针 分配内存时 , 如果分配到一半..., 出现错误 ; 如 : 为 5 个 一级指针 分配内存 , 但是分配到第 3 个时 , 突然报错 , 需要将前面 2 个指针给释放 , 否则会造成野指针 问题 ; 按照如下代码 , 一旦...malloc 失败 , 就设置返回值非 0 , 并且使用 goto 语句 , 跳转到 END 位置 , 在 END 位置释放先关内存 ; 部分代码示例 : /** * @brief split_str..., 求出有多少行 do { // 字符串中, 查找 字符 ',' // 找到后 , 返回 逗号 第一次出现的指针 p1 = strchr...第一次出现的指针 p1 = strchr(p1, c); if (p1 !

1.8K20

代码之美,正则之道

\1将指向空字符串,也就是一个位置(有些类似后面将要讲到的零宽断言),对于”890”子字符串,8、9或0后面共有3个位置可供反向引用匹配,故最终又匹配到三个空字符串。...环视只进行子表达式的匹配, 匹配到的内容不保存到最终的匹配结果, 由于匹配是零宽度的, 故最终匹配到的只是一个位置....环视高级的地方就在于它通过一次捕获就可以定位到一个位置, 对于复杂的文本替换场景, 常有奇效, 而分组则需要更多的操作. 请往下看. 千位分割符 千位分隔符, 顾名思义, 就是数字中的逗号....正则表达式使用全局匹配g, 表示匹配到一个位置后, 它会继续匹配, 直至匹配不到. 将这个位置替换为逗号, 实际上就是每3位数字添加一个逗号....当然对于字符串”123456”这种刚好拥有3的正整数倍的数字的, 当然不能在1前面添加逗号. 那么使用 (?!^) 就指定了这个替换的位置不能为起始位置.

1.7K20

代码之美,正则之道

\1将指向空字符串,也就是一个位置(有些类似后面将要讲到的零宽断言),对于”890”子字符串,8、9或0后面共有3个位置可供反向引用匹配,故最终又匹配到三个空字符串。...环视只进行子表达式的匹配, 匹配到的内容不保存到最终的匹配结果, 由于匹配是零宽度的, 故最终匹配到的只是一个位置....环视高级的地方就在于它通过一次捕获就可以定位到一个位置, 对于复杂的文本替换场景, 常有奇效, 而分组则需要更多的操作. 请往下看. 千位分割符 千位分隔符, 顾名思义, 就是数字中的逗号....正则表达式使用全局匹配g, 表示匹配到一个位置后, 它会继续匹配, 直至匹配不到. 将这个位置替换为逗号, 实际上就是每3位数字添加一个逗号....当然对于字符串”123456”这种刚好拥有3的正整数倍的数字的, 当然不能在1前面添加逗号. 那么使用 (?!^) 就指定了这个替换的位置不能为起始位置.

1.2K30

vim 文本编辑器

(即在默认模式进入命令模式时的光标位置)向下搜索匹配(如果查到到文件结尾,依旧没找到,会从头开始查找) 【:/pat1/,/pat2/】从第一次被pat1模式匹配到的行开始,一直到第一次被pat2配到的行结束.../,/pat2/d】 表示,从光标位置开始向下匹配,第一次配到“pat1”的位置开始到第一次配到pat2结束是的末行,删除末行。...(注意:如果匹配结果是多行,只会删除最后一行) 【y】例如:【:/pat1/,/pat2/y】 表示,从光标位置开始向下匹配,第一次配到“pat1”的位置第一次配到“pat2”的位置直接.../abc.txt】 表示从光标位置开始向下匹配,第一次配到pat1的位置第一次配到pat2的位置内容写到当前目录下的abc.txt文件中。.../abc.txt】 表示从光标位置开始向下匹配,第一次配到“pat1”的位置第一次配到“pat2”的位置的行末插入abc.txt文件内容 4.2.4.3 查找并替换 【:/PATTERN

4.2K10

通杀绝⼤多数交易平台的Tradingview Dom XSS漏洞分析

expression1-如果 test 为 true,则返回表达式,可能是逗号表达式。 expression2-如果 test 为 false,则返回表达式,可以使用逗号表达式链接多个表达式。...p.indexOf("#"); p是前面location.href;的返回值;indexOf()可返回某个指定的字符串值在字符串中首次出现的位置。...一个非负的整数,规定要提取的子串的第一个字符在 stringObject 中的位置。 stop -可选。一个非负的整数,比要提取的子串的最后一个字符在 stringObject 中的位置多 1。...function (replacement) 一个用来创建新子字符串的函数,该函数的返回值将替换掉第一个参数匹配到的结果。参考下面的指定一个函数作为参数。 ? ?...匹配结束,将匹配到的值替换成空。 urlParams.indicatorsFile就是indicatorsFile参数的值: ?

1.9K30

就因为这三个知识点,我彻底学废了”正则表达式“

=xxx)匹配到最前面那个位置,其他位置都是(?!xxx)匹配到的啦。 (?<=p) 符合p子模式后面(注意(?=p)表示的是前面)的那个位置。换句话说是,有一个位置,其前面的部分需要满足p子模式。...<=p)匹配到位置之外的位置都是属于(?<!p)的, 'xxx_love_study_1.mp4'.replace(/(?<!xxx)/g, '❤️') // (?...<=xxx)匹配到后面那个位置,其他位置都是(?<!xxx)匹配到的啦。...栗子详解 学习完位置相关的知识,我们来做一下开头的几个题目试试 题目1:数字的千分位分割法 将123456789转化为123,456,789 观察题目的规律就是从后往前,每三个数字前加一个逗号,(需要注意的是开头不需要加逗号...p可以表示每三个数字,要添加的逗号所处的位置正好是(?=p)匹配出来的位置

2K20

可能是最好的正则表达式教程的笔记

基本语法 通过一张图表来对正则表达式的基本进行一个回顾 single char quantifiers(位置) Column C \d 匹配数字 * 0个或者更多 ^一行的开头 \w 匹配word(数字...\d{4} replace: $1-xxx-xxxx ps: 这里可以直接用JS的replace函数进行操作,但是正则不是JS专属的,所以这里先介绍通用方法,之后对JS部分进行总结 1.3.2....在JavaScript中的应用 在js中,主要的正则表达式都是涉及到string的应用。...== null) { console.log(result); result = srg.exec(str); } result包含的内容可能比想象中的多,它是一个数组,比如第一次执行,...我们并不是想让它分割的依据是逗号或者空格,依据应该是逗号或空格所在的连续序列。

1.5K10
领券