美文网首页
正则表达式之环视与位置

正则表达式之环视与位置

作者: 小绿帽特攻队 | 来源:发表于2019-02-24 13:10 被阅读1次

环视与位置是正则表达式中的两个比较复杂难懂的概念。但是掌握后,对于正则的使用也会更得心应手,工作中的正则需求也就都能搞定了。

位置

正则表达式中只有匹配两种东西,一种是内容,另一种就是位置。

匹配内容:

/\w+/.exec('hello') // "hello"

\w匹配到的是单词字符,所以\w匹配的是内容。

在知道什么是内容后,那么什么是位置呢?

我们现在低头看看你的键盘的第一排字母按键q、w、e、r,可以看到q与w并不是完全挨在一起的,中间会有一条不算太宽大的缝。这条缝就可以理解成位置。一个 qwer的字符串,其实就是从 tab键到t键中间的所有空间。

缝隙 + q + 缝隙 + w + 缝隙 + e + 缝隙 + r + 缝隙

一些其他匹配位置的常用匹配符

  • ^ 匹配开始的位置
  • $ 匹配结束的位置
  • \b 匹配单词边界
  • \B 匹配非单词边界
  • (?=p)(?!p)(?<=p)?<!p 环视

环视

环视包括以下四种(后两种ES6支持)

  • 正前瞻(positive lookahead)
  • 负前瞻(negative lookahead)
  • 正后顾(positive lookbehind)
  • 负后顾(negative lookbehind)

一些官方的文档或博客上面会使用一些晦涩难懂(正向先行断言,负向先行断言等)的词来翻译以上四种环视。

所有的环视匹配的都是位置。

正前瞻

正前瞻语法为 (?=p),匹配p前面的位置。

const str = 'qwer'
str.replace(/(?=w)/g, 'a') // "qawer"

把 w 前面的位置替换成 a。

负前瞻

负前瞻语法为(?!p),匹配结果是正前瞻的取反,匹配除了p,所有其他字符前面的位置。

const str = 'qwer'
str.replace(/(?!w)/g, 'a') // "aqwaqar"

把除了w的字符前面的位置都替换成a

正后顾

前瞻是往前看,后顾自然就是往后看了。

正后顾语法(?<=p)。匹配p后面的位置。

const str = 'qwer'
str.replace(/(?<=w)/g, 'a') // "qwaer"

w后面的位置替换成a

负后顾

负后顾语法(?<!p)。匹配除了p` 所有其它字符后面的位置。

const str = 'qwer'
str.replace(/(?<!w)/g, 'a') // "qaweara"

除了w的其他字符后面的位置替换成a


以上就是位置与环视的核心内容了,其实把位置理解了,环视理解起来也就很简单了呢。

相关文章

  • 正则表达式之环视与位置

    环视与位置是正则表达式中的两个比较复杂难懂的概念。但是掌握后,对于正则的使用也会更得心应手,工作中的正则需求也就都...

  • 第二章:使用正则表达式匹配修改文本

    匹配摄氏温度或者华氏温度 正则表达式部分常用符号: 使用正则表达式修改文本: 处理邮件: 环视 概念:环视只进行子...

  • 正则表达式 -- 环视

    如何使用正则表达式表示「非」逻辑? '^' 可以表示排除的逻辑: [^abc] # 除abc之外的所有字符 然而这...

  • 正则表达式 — 环视

    原文:https://www.fanhaobai.com/2017/01/regex-lookaround.htm...

  • JavaScript 正则表达式(3)

    在JavaScript正则表达式(2)中,我们一起学习了正则表达式的入门进阶功能,比如反向引用,分组匹配,环视,一...

  • 正则位置匹配

    正则表达式要么匹配字符,要么匹配位置。 一、字符串的位置 二、正则表达式如何匹配位置 1、es5中匹配位置的正则:...

  • Vim 环视和固化分组

    和 perl 稍有不同的是,vim 中的环视和固化分组的模式的位置与 perl 不同。 例如,查找紧跟在 foo ...

  • String支持4种使用正则表达式的方法

    1.search() 参数: 一个正则表达式 返回: 第一个与之匹配的子串的起始位置,如果找不到匹配的子串,返回-...

  • python正则表达式详解

    #首先,python中的正则表达式大致分为以下几部分: 元字符 模式 函数 re 内置对象用法 分组用法 环视用法...

  • 正则表达式位置匹配攻略

    来源:正则表达式位置匹配攻略作者:老姚(转载已获得作者授权) 正则表达式是匹配模式,要么匹配字符,要么匹配位置。 ...

网友评论

      本文标题:正则表达式之环视与位置

      本文链接:https://www.haomeiwen.com/subject/glumyqtx.html