正则表达式断言练习

来自泡泡学习笔记
BrainBs讨论 | 贡献2023年8月14日 (一) 15:13的版本 (创建页面,内容为“== 一般边界类型概述示例 == <pre>// 原始字符串 "tey, ihe light-greon apple tangs on ihe greon traa"; // 1) 使用 ^ 匹配字符串开始处。 ^t // 2) 使用 $ 匹配字符串结尾处。 aa$ // 3) 使用 \b 匹配单词和空格边界上的字符。 \bi // 4) 使用 \B 匹配实体边界内的字符。 \Bo</pre> <span id="使用-控制字符匹配输入的开头"></span> == 使用 <code>^</code>(控制字符)匹配输入的…”)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳到导航 跳到搜索

一般边界类型概述示例

// 原始字符串
"tey, ihe light-greon apple tangs on ihe greon traa";

// 1) 使用 ^ 匹配字符串开始处。
^t

// 2) 使用 $ 匹配字符串结尾处。
aa$

// 3) 使用 \b 匹配单词和空格边界上的字符。
\bi

// 4) 使用 \B 匹配实体边界内的字符。
\Bo

使用 ^(控制字符)匹配输入的开头

使用 ^匹配输入的开头。在这个例子中,我们可以通过 /^A/ 正则表达式得到以 A 开头的水果。为了选择合适的水果,我们可以使用带有箭头函数的过滤方法。

// 使用正则 /^A/ 选择以'A'开头的水果。
// 这里的 '^' 只有一种含义:匹配输入的开头。
["Apple", "Watermelon", "Orange", "Avocado", "Strawberry"]
==>
["Apple", "Avocado"]

在第二个示例中,^用于在输入的开始处匹配,以及在内部使用时用于创建否定或被补充的字符集组和范围。

// 使用正则 /^[^A]/ 选择 不是以'A'开头的水果
// 在这个例子中,"^"控件符号表示两种含义:
// 1) 匹配输入的开头
// 2) 一个否定的字符集:[^A] ,意思是匹配不是'A'的字符
["Apple", "Watermelon", "Orange", "Avocado", "Strawberry"]
==>
["Watermelon", "Orange", "Strawberry"]

匹配字边界

// 选择包含以"en"或"ed"结尾的单词的描述:
// /(en|ed)\b/
["Red apple", "Orange orange", "Green Avocado"]
==>
["Red apple", "Green Avocado"]

先行断言

// /First(?= test)/

["First test", "test First peach", "This is a First test in a year.", "This is a First peach in a month."]
==>
["First test", "This is a First test in a year."]

先行否定断言

// /\d+(?!\.)/ 
"3.141"
==>
"141"

不同含义的’?!’:断言和范围的组合用法

// 不同含义的 ?! 结合使用断言 /x(?!y)/ 和范围 [^?!]。
// 原始字符串
"Do you want to have an orange? Yes, I do not want to have a lemon!"

// /[^?!]+have(?! a lemon)[^?!]+[?!]/
"Do you want to have an orange?"

// /[^?!]+have(?! an orange)[^?!]+[?!]/
"Yes, I do not want to have a lemon!"

后行断言

// /(?<=ripe )orange/
["ripe orange A ", "green orange B", "ripe orange C"]
==>
[ "ripe orange A ", "ripe orange C" ]