问题标签 [negative-lookbehind]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1161 浏览

python - re.sub() 负向向后看 + 负向向前看

从字符串中删除所有出现的 of ',除非单词以 s 结尾,如果单词以s'or结尾,'s'保留在其中。所有其他出现都被删除。

例子:

到目前为止我想出了什么:

这与第一个示例匹配并忽略它。

这是它的工作原理

我有其他问题

0 投票
4 回答
72 浏览

c# - 我被困住的正则表达式问题

我必须编写一个正则表达式来匹配模式1-6/2011。在这种情况下, 之前的数字/不能大于12。所以我必须在1-12.

我写了一个正则表达式:

但是,在这里我也得到了 20-6/2014 作为比赛。

我尝试了消极的后视:

在这里,单个数字没有被识别。

0 投票
2 回答
143 浏览

python - 用于解析版本字符串并查看固定宽度的 Python 正则表达式

我正在尝试编写一个 Python 库来解析我们的版本格式字符串。(简化的)版本字符串格式如下:

<product>-<x>.<y>.<z>[-alpha|beta|rc[.<n>]][.<extra>]][.centos|redhat|win][.snb|ivb]

这是:

  • 产品,即foo
  • 数字版本,即:0.1.0
  • [可选] 预发布信息,即:beta, rc.1,alpha.extrainfo
  • 【可选】操作系统,即:centos
  • [可选] 平台,即:snbivb

所以以下是有效的版本字符串:

对于所有这些示例,以下正则表达式都可以正常工作:

但是问题出现在这种类型的版本中(没有“额外”的预发布信息,但有操作系统和/或平台):

使用上面的正则表达式,对于字符串 #8,在预发布的额外信息中而不是组redhat中被拾取。pre_xos

我尝试使用后视来避免选择 os 或平台字符串pre_x

那是:

如果 Python 的标准模块re可以接受可变宽度后视,这将正常工作。我宁愿尝试坚持标准模块,而不是使用正则表达式,因为我的库很可能被分发到大量机器上,我想在这些机器上限制依赖关系。

我也看过类似的问题:thisthisthis不适用。

关于如何实现这一目标的任何想法?

我的 regex101 链接:https ://regex101.com/r/bH0qI7/3

[对于那些感兴趣的人,这是我实际使用的完整正则表达式:https://regex101.com/r/lX7nI6/2]

0 投票
3 回答
67 浏览

.net - 将前瞻和后瞻统一到单个正则表达式运算符中

0 投票
1 回答
102 浏览

javascript - What is an alternative method for negative look-behind using ECMAScript in C++?

I have the following text:

CCMRC Version: 00500000

RC Version: 01730000

I want to just get the number for RC Version, not CCMRC. So I want to get 01730000 not 00500000.

I have this regex pattern that should work:

But negative lookbehind I believe is not supported in C++. So does anyone know of another way this can be achieved? Thank you.

0 投票
1 回答
47 浏览

html - 查找前面没有的正则表达式模式

我有以下 HTML 文件结构:

并且使用正则表达式,我需要获取每个标题之间的所有内容,直到下一个标题或 hr 标签,如果它是 a in a table

到目前为止,我已经获得了所有 h2->h2|hr 内容。它是这样的:

如何跳过表中包含的 H2 下的内容?我试过带着消极的表情在后面胡思乱想,但我没有得到任何结果。

感谢您的帮助。

0 投票
3 回答
2006 浏览

regex - 如何使用负搜索进行正则表达式?

我想在文档中搜索以下字符串

其中子字符串!=“自我”

所以

会通过的。

会失败

0 投票
2 回答
97 浏览

regex - perl 正则表达式停止从下一个贪婪捕获中获取负面回溯

以 perl v5.22.0 中的这个简单示例为例:

它打印:

但我没想到$data会改变。我还尝试了一些早期版本的 perl 5.x,结果相同。

相反,我希望这个具有相同正则表达式的字符串会导致替换,但它不会:


我不明白为什么会这样。在任何一个中,星号都应该是贪婪的。我认为$1将在第一个示例和第二个示例中\n进行负面的后视组比较。当我使用 perl 时,Regex101 说:barbaz

量词:* 在零次和无限次之间,尽可能多次,根据需要回馈。

那么在这种情况下会发生什么是它回馈消极的后视?

正如标题所说,真正的问题是我想阻止后视者吞下第二组。不幸的是,它不是一个字母,这只是为了让示例更容易理解。同样在 perl 中,我对负面后视可以做的事情有些限制,例如“可变长度后视未在正则表达式中实现”。如果可能的话,我想要一个与 perl 5.8 兼容的答案。谢谢

0 投票
1 回答
95 浏览

regex - XML 日志文件正则表达式

我无法更改的遗留系统每天会输出 5 Gig 的大部分糟糕的 XML 日志,并破坏我的摄取许可证。有 2 类详细错误每分钟发生 1000 多次,但每隔几分钟就有一个真正有趣的条目。我想大大缩短 sed 中的重复条目,并保留有趣的条目不变

所以我需要
1. 正则表达式来匹配 2 类烦人的日志条目中的每一个(例如 ...'decimal'... 和 ...'DBNull'... 但不是偶尔有趣的)。
一个匹配每个烦人的错误类的正则表达式很好,我可以做 2 次 sed 传递
2。我需要一个带有时间戳的捕获组,这样我就可以用一个简洁的版本替换长 XML 行 - 但要使用正确的时间戳,以免丢失保真度。

我已经做到了与捕获创建日期相匹配:

这是接近的,但遭受了一种反向贪婪,我将“十进制”匹配到一个开头的日志语句之前的几个条目已经玩过消极的后视,但只是让自己非常头疼

样本数据

0 投票
1 回答
927 浏览

javascript - 如果在括号内,则要排除的 Javascript 正则表达式

我正在尝试在字符 +*() 上拆分表达式字符串,但如果它们不在括号内,我只需要在那里拆分。我正在努力为此任务创建正确的正则表达式。

例子:

我希望这能产生一个数组,例如:

目前我的正则表达式拆分字符 +*()[]

因为我也在方括号上拆分,然后我循环遍历数组并合并括号内的任何内容。我认为这很笨拙,并且想将其全部移入正则表达式。

我正在使用 JavaScript,需要能够支持回 IE8。我还读到了一些关于能够在消极的情况下做到这一点的文章,但我看到 JavaScript 不支持这一点。