![]() |
1
30
Lookbehind Assertions 得到了 accepted 进入 ECMAScript specification 2018。这已在中实现 V8 和 shipped without flags with Google Chrome v62 而在 Node.js v6 behind a flag and v9 without a flag . 因此,如果您是为一个只使用Chrome的环境(例如 Electron ) Node ,你今天就可以开始使用lookbehinds了! 正查找用法:
负查找用法:
其他平台上的支持:
|
![]() |
2
77
因为javascript支持 negative lookahead 一种方法是:
例1: 以下是安德鲁·恩斯利的问题:
输出:
例2:
在@neaumusic注释后(匹配
输出:
|
![]() |
3
48
假设你想找到所有
支持负面观察:
不支持负面观察:
基本上的想法是抓住前面的n个字符,排除与前面的负向匹配,但也要匹配没有前面n个字符的情况。(其中n是后面看的长度)。 所以有问题的正则表达式是:
将转换为:
您可能需要利用捕获组来找到您感兴趣的字符串的确切位置,或者您希望用其他内容替换特定的部分。 |
![]() |
4
41
Mijoja的策略适用于您的特定案例,但不适用于一般情况:
这里有一个例子,目标是匹配一个双L,但如果前面加上“ba”,则不匹配。注意单词“balll”--真正的lookback应该抑制前2个l,但匹配第2对。但是,通过匹配前2个l,然后将该匹配忽略为假阳性,regexp引擎将从 结束 并忽略假阳性中的任何字符。 |
![]() |
5
34
使用
|
![]() |
6
9
可以通过取消角色集来定义非捕获组:
…每一个
|
![]() |
7
1
按照mijoja的想法,并借鉴jasons所暴露的问题,我有这个想法;我检查了一下,但对自己不太确定,所以由比我更精通JS regex的人进行验证会很好:)
我的个人输出:
原则是呼叫
---任何不需要的大小的子字符串(这里
------或者比这个小,如果它是字符串的开头:
接下来,
——实际需要寻找的东西(这里
在每次呼叫时
这里我们更改字符串,因此我们需要保留长度差的跟踪,以便偏移
因为基元字符串是不可变的,所以我们可以使用变量
我想,就性能而言,这肯定是相当苛刻的:所有那些毫无意义的“换成”,
另一件事是,我不知道它将如何处理更复杂的情况,也就是说,伪查找的复杂值…长度可能是最有问题的数据。
而且,在
希望我已经清楚了,如果不犹豫的话,我会尽力的。:) |
![]() |
8
0
这有效地做到了
搜索和替换示例
请注意,负查找字符串的长度必须为1个字符,这样才能工作。 |
![]() |
9
0
用你的箱子,
如果你想替换
比赛
所以我们发现
|
![]() |
10
-1
|
![]() |
11
-1
这可能会有所帮助,具体取决于上下文: 这与Jim中的M相匹配,但不是Jam:
|
![]() |
lonix · 使用sed从JSON中提取非贪婪正则表达式 1 年前 |
![]() |
Dima Malko · 如何在指定符号前添加符号? 2 年前 |
![]() |
shekharsabale · 从列表元素捕获子字符串 2 年前 |
![]() |
Katia · 根据特定规则进行多行匹配 2 年前 |
![]() |
MHA · Pandas str.extract()以字母结尾的数字 2 年前 |
![]() |
Slava Vir · 如何查找后面“/”之间的最后一组 2 年前 |