在我们处理文件时,很多时候会用到查找与替换。当我们想将文件中某一部分替换替换文件中另一部分时,怎么办呢? 下面正则表达式 给我提供方法。

正则表达式,提供复杂 并且弹性的查找与替换

注意: 不支持多行表达式 (involving \n, \r, etc).

1 基本表达式

符号 解释
. 匹配任意字符,除了新一行(\n)。也就是说 “.”可以匹配 \r ,当文件中同时含有\r and \n时,会引起混乱。要匹配所有的字符,使用\s\S。
(…) 这个匹配一个标签区域. 这个标签可以被访问,通过语法 \1访问第一个标签, \2 访问第二个, 同理 \3 \4 … \9。 这些标签可以用在当前正则表达式中,或则替search和replace中的换字符串。
\1, \2, etc 在替换中代表1到9的标签区域(\1 to \9)。例如, 查找字符串 Fred([1-9])XXX 并替换为字符串 Sam\1YYY的方法,当在文件中找到Fred2XXX的字符串时,会替换为Sam2YYY。注意: 只有9个区域能使用,所以我们在使用时很安全,像\10\2 表示区域1和文本”0”以及区域2。
[…] 表示一个字符集合, 例如 [abc]表示任意字符 a, b or c.我们也可以使用范围例如[a-z] 表示所以的小写字母。
[^…] 表示字符补集. 例如, [^A-Za-z] 表示任意字符除了字母表。
^ 匹配一行的开始(除非在集合中, 如下).
$ 匹配行尾.
* 匹配0或多次, 例如 Sa*m 匹配 Sm, Sam, Saam, Saaam 等等.
+ 匹配1次或多次,例如 Sa+m 匹配 Sam, Saam, Saaam 等等.
? 匹配0或者1次, 例如 Sa?m 匹配 Sm, Sam.
{n} 匹配确定的 n 次.例如, ‘Sa{2}m’ 匹配 Saam.
{m,n} 匹配至少m次,至多n次(如果n缺失,则任意次数).例如, ‘Sa{2,3}m’ 匹配 Saam or Saaam. ‘Sa{2,}m’ 与 ‘Saa+m’相同
*?, +?, ??, {n,m}? 非贪心匹配,匹配第一个有效的匹配,通常 ‘<.>’ 会匹配整个 ‘content’字符串 –但 ‘<.?>’ 只匹配 ” .这个标记一个标签区域,这些区域可以用语法\1 \2 等访问多个对应1-9区域。

2 标记和分组

符号 解释
(…) 一组捕获. 可以通过\1 访问第一个组, \2 访问第二个.
(?:…) 非捕获组.
(?=…) 非捕获组 – 向前断言. 例如’(.*)(?=ton)’ 表达式,当 遇到’Appleton’字符串时,会匹配为’Apple’.
(?<=…) 非捕获组 – 向后断言. 例如’(?<=sir) (.*)’ 表示式,当遇到’sir William’ 字符串时,匹配为’ William’.
(?!…) 非捕获组 – 消极的向前断言. 例如’.(?!e)’ 表达式,当遇到’Apple’时,会找到每个字母除了 ‘l’,因为它紧跟着 ‘e’.
(? 非捕获组 – 消极向后断言. 例如 ‘(?
(?P…) 命名所捕获的组. 提交一个名称到组中供后续使用,例如’(?PA[^\s]+)\s(?P=first)’ 会找到 ‘Apple Apple’. 类似的 ‘(A[^\s]+)\s\1’ 使用组名而不是数字.
(?=name) 匹配名为name的组. (?P…).
(?#comment) 批注 –括号中的内容在匹配时将被忽略。

3 特殊符号

符号 解释
\s 匹配空格. 注意,会匹配标记的末尾. 使用 [[:blank:]] 来避免匹配新一行。
\S 匹配非空白
\w 匹配单词字符
\W 匹配非单词字符
\d 匹配数字字符
\D 匹配非数字字符
\b 匹配单词边界. ‘\bW\w+’ 找到W开头的单词
\B 匹配非单词边界. ‘\Be\B+’ – 找到位于单子中间的字母’e’
\< This matches the start of a word using Scintilla’s definitions of words.
> This matches the end of a word using Scintilla’s definition of words.
\x 运行用x来表达可能具有其他意思的字符。例如, [ 用来插入到文本中作为[ 而不是作为字符集的开始.

4 字符类

符号 解释
[[:alpha:]] 匹配字母字符: [A-Za-z]
[[:digit:]] 匹配数字字符: [0-9]
[[:xdigit:]] 匹配16进制字符: [0-9A-Fa-f]
[[:alnum:]] 匹配字母数字字符: [0-9A-Za-z]
[[:lower:]] 匹配小写字符: [a-z]
[[:upper:]] 匹配大写字符: [A-Z]
[[:blank:]] 匹配空白 (空格 or tab):[ \t]
[[:space:]] 匹配空白字符:[ \t\r\n\v\f]
[[:punct:]] 匹配标点字符: [-!”#$%&’()*+,./:;<=>?@[]_`{
[[:graph:]] 匹配图形字符: [\x21-\x7E]
[[:print:]] 匹配可打印的字符 (graphical characters and spaces)
[[:cntrl:]] 匹配控制字符

5 替换操作

使用正则表达式的标记,通过()来包围想要用的字符,然后用\1 来替换字符串,第一个匹配文本。

例如:

Text body Search string Replace string Result
Hi my name is Fred my name is (.+) my name is not \1 Hi my name is not Fred
The quick brown fox jumped over the fat lazy dog brown (.+) jumped over the (.+) brown \2 jumped over the \1 The quick brown fat jumped over the fox lazy dog

6 限制

Support for regular expressions in PN2 is currently limited, the supported patterns and syntax are a very small subset of the powerful expressions supported by perl. 最大的限制是正则表达式只能匹配单行,不能用多行匹配表达。可以用Backslash Expressions代替.

准备计划是使用PCRE库 library (used elsewhere in PN2) 来支持文档搜索.

from http://www.pnotepad.org/docs/search/regular_expressions/

___

补充:

\n 其实在行首
\r 其实在行尾
但我们都看不到因为编辑器隐藏了

我们可以在Notepadd++里面去替换
但要选search mode 扩展和wrap around,

不能选match whole word only

——————————

1、视图--显示符号--显示所有符号

2、ctrl+h

勾选查找模式--扩展

3、将LF对应的\n

替换为\r\n,行尾显示为CRLF

NotePad++ 正则表达式替换 高级用法相关推荐

  1. mysql 正则替换 换行,MySQL中使用replace、regexp进行正则表达式替换的用法分析

    本文实例讲述了MySQL中使用replace.regexp进行正则表达式替换的用法.,具体如下: 今天一个朋友问我,如果将数据库中查到的类似于"./uploads/110100_cityHo ...

  2. mysql替换首字母_MySQL中使用replace、regexp进行正则表达式替换的用法分析

    这篇文章主要介绍了MySQL中使用replace.regexp进行正则表达式替换的用法,结合具体实例形式分析了replace.regexp正则替换的使用技巧与相关注意事项,需要的朋友可以参考下 本文实 ...

  3. js mysql替换_MySQL中使用replace、regexp进行正则表达式替换的用法分析

    本文实例讲述了MySQL中使用replace.regexp进行正则表达式替换的用法.分享给大家供大家参考,具体如下: 今天一个朋友问我,如果将数据库中查到的类似于"./uploads/110 ...

  4. mysql正则替换_MySQL中使用replace、regexp进行正则表达式替换的用法分析

    本文实例讲述了MySQL中使用replace.regexp进行正则表达式替换的用法.分享给大家供大家参考,具体如下: 今天一个朋友问我,如果将数据库中查到的类似于"./uploads/110 ...

  5. notepad++正则表达式替换字符串

    注意:Notepad++正则表达式字符串最长不能超过69个字符 表达式 说明 /t 制表符. /n 新行. . 匹配任意字符. | 匹配表达式左边和右边的字符. 例如, "ab|bc&quo ...

  6. notepad++ 正则表达式 替换数字

    正则表达式 替换数字 value:\b(\d)\b value:[1-9]\d* {value:0,x:'120.25052',y:'30.215128'},{value:1,x:'120.24949 ...

  7. notepad正则表达式替换_正则表达式装逼(实用)指南

    正则表达式(Regular Expression,或者Regex),能干嘛?听说很强悍,很多人用来查找字符串,或者替换某些字符串. 实际上,正则表达式有四个功能: 匹配,即查找,例如,从杂乱的一堆文本 ...

  8. Python基础教程:正则表达式re高级用法与案例

    search 需求:匹配出文章阅读的次数 import reret = re.search(r"\d+", "阅读次数为 9999") ret.group() ...

  9. 正则表达式替换叠词,组的使用

    注:本文为学习笔记. 正则表达式的高级用法. 1.替换叠词 2.组的概念 和使用 package cn.itcast.regex.function;public class RegexFunction ...

最新文章

  1. 2020年全球十大突破性技术公布:数字货币等在列
  2. 链表的排序(Python和C实现)
  3. mysql 执行sql导出表格形式
  4. 不用任何比较判断找出两个数中较大的数
  5. SpringMVC-注解@RequestParam
  6. Unity3D 游戏引擎之平面小球重力感应详解【转】
  7. flask之jinji2模板介绍
  8. [ASP.NET Core 3框架揭秘] 跨平台开发体验: Docker
  9. 2019年这50个Kafka面试题,你知道答案么
  10. 不恢复余数除法原理_义务教育第一学段中七个除法相关概念的一种理解
  11. react入门教程案例井字棋(包含改进代码)
  12. 普元EOS在运算逻辑里面调用HttpServletRequest ,HttpServletResponse
  13. 下拉框输入模糊查询_高考英语听力考试查询、网上填报志愿时间、诈骗陷阱提防!全在这里了...
  14. 你为什么来日本做IT?日本IT优劣谈
  15. idea启动azkaban2.5
  16. 谷歌账号最后验证身份手机号无法使用
  17. 【JoJo的摄影笔记】黎明女神的呼唤—— 佳能王朝霸业崛起
  18. HPE主机根据磁盘序列号或位置确定Naa号
  19. java Double去掉科学计数E
  20. 走进通信:为什么4G信号满格,却上不了网呢

热门文章

  1. 人工智能医疗革命已经开始,但患者会接受 Dr. AI 吗?
  2. Mybatis怎么插入字段为null的记录
  3. Android 实现个性的ViewPager切换动画 实战PageTransformer(兼容Android3.0以下)
  4. html把地图显示全屏显示,Openlayers实现地图全屏显示
  5. ISO 15765-2标准报文格式详情
  6. 将Java对象序列化成XML格式,将XML反序列化还原为Java对象
  7. 如何进行PC端多屏适配
  8. ftp 客户端,9款超级好用而且免费的ftp 客户端,你值得拥有
  9. 2020/11/13·Java·人脸识别一键登录/注册
  10. CAD制图初学入门教程:阵列功能的使用技巧