问题标签 [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 投票
3 回答
2301 浏览

regex - 正则表达式后视问题

我用

匹配像 ##MyString## 这样的字符串,但不是以下形式:

这适用于上述形式,但不适用于此:(它仍然匹配,不应该匹配)

我试过:

没有运气。任何建议将不胜感激。

编辑:我正在使用 PHP preg_match() 函数

0 投票
3 回答
1340 浏览

regex - 查找断言和可选子字符串的问题

我正在尝试编写一些正则表达式来解析 Hyperic HQ 生成的警报中的信息。警报以电子邮件的形式出现,主题行如下:

长话短说,我需要能够始终如一地获取“Ap​​ache Web 服务器”部分,而不管主机名可能甚至不存在。我知道主机名总是以“myserver.net”结尾。

我拥有的正则表达式是:

我期望这将匹配 and 之间的零个或多个字符"Resource:""State:"可选地跟随(但不包括)主机名。

不幸的是,它返回的是"Server",即我要匹配的位的最后一个字。无论主机名是否在字符串中,都会发生这种情况。

任何人都可以帮忙吗?

编辑:下面乍得提供的解决方案

0 投票
3 回答
1970 浏览

regex - 你能挽救我的负面回顾例子吗?

Mastering Perl的“高级正则表达式”一章中,我有一个损坏的示例,我无法找到一个很好的修复方法。这个例子可能是为了自己的利益而试图过于聪明,但也许有人可以为我解决它。里面可能有这本书的免费副本,用于修复工作。:)

在讨论环视的部分中,我想使用否定的环视来实现带有小数部分的数字的 commifying 例程。关键是要使用负面的回顾,因为那是主题。

我愚蠢地这样做了:

(?<!\.\d)断言 之前的位不是(?=(?:\d\d\d)+\b)小数点和数字。

愚蠢的事情是没有努力去打破它。通过在末尾添加另一个数字,现在有一组三个数字,前面没有小数点和一个数字:

如果在 Perl 中lookbehinds 可以是可变宽度,这将非常容易。但他们不能。

请注意,在没有负面回顾的情况下很容易做到这一点,但这不是示例的重点。有没有办法挽救这个例子?

0 投票
4 回答
360 浏览

regex - 正则表达式、前瞻和后视的命名约定

为什么它是反直觉的?

/(?<!\d)\d{8}(?!\d)/,这里(?<!\d)来,但叫lookbehindnext,但叫lookahead。所有这些都是反直觉的。(?!\d)

以这种方式命名它的原因是什么?

0 投票
3 回答
2138 浏览

java - RegEx Advanced : 正向回顾

这是我的测试字符串:

我想在 rel 属性之间获取每个 JSON 形成的元素。它适用于第一个元素(objectid)。

这是我的 ReqEx,效果很好:

但我想做这样的事情,这是行不通的:

所以我可以解析搜索字符串的每个元素。

我正在使用 Java-ReqEx

0 投票
2 回答
449 浏览

java - Java 正则表达式视图状态

我正在将一些功能从 C++ 应用程序移植到 java。这涉及读取包含正则表达式的不可修改的数据文件。

许多数据文件包含类似于以下内容的正则表达式:

这些正则表达式会产生以下错误:

在 C++ 中,所使用的引擎支持这些表达式。是否有另一种形式的正则表达式可以产生相同的结果,可以使用像我的示例这样的表达式作为输入来生成?

0 投票
3 回答
391 浏览

php - 需要可变宽度负后视替换

我在这里(以及更多网站)查看了许多问题,并提供了一些提示,但没有一个给我明确的答案。我知道正则表达式,但我远非大师。这个特定的问题涉及 PHP 中的正则表达式。

我需要在文本中找到未被给定类的超链接包围的单词。例如,我可能有

我需要匹配第二只和第三只大象而不是第一只(由测试类“no_check”标识)。请注意,超链接中的属性可能不仅仅是 href 和 class。我想出了

它在正则表达式测试软件中运行良好,但在 PHP 中却不行。

任何帮助是极大的赞赏。如果您不能提供正则表达式,但可以找到某种 PHP 代码逻辑来规避对它的需求,我将同样感激。

0 投票
4 回答
684 浏览

php - 使用字符串作为模式但将其排除在删除之外

我对正则表达式很陌生,顺便说一下,我学到了一些东西,但仍然是知识!

所以我想请你澄清它是如何工作的!

假设我有以下字符串,如您所见,它们的格式可以略有不同,但它们非常相似!

现在我想替换第一个 AZ 块冒号之间的所有内容,例如我会保留

所以根据我的菜鸟知识,我已经解决了这个糟糕的正则表达式!:-(

但为什么我确定这个正则表达式不起作用!?:-)

请帮助我!

PS:问题的标题很清楚,我也想知道如何使用众所周知的字符串块来匹配另一个......

..没有删除DTSTART

谢谢你的时间!

问候卢卡·菲洛索菲

0 投票
1 回答
2208 浏览

java - 后向引用

您可以在后视中使用反向引用吗?

假设我想split在我身后的任何地方重复两次。

使用REGEX2(其中反向引用是嵌套在一个lookbehind 中的一个lookahead 中)可以工作,但REGEX1在运行时会出现此错误:

我想这\1有道理的,因为通常反向引用可以捕获任何长度的字符串(如果正则表达式编译器更聪明一点,它可以确定(.)在这种情况下,因此具有有限长度)。

那么有没有办法在后视中使用反向引用?

如果没有,您是否可以始终使用这种嵌套的前瞻来解决它?还有其他常用的技术吗?

0 投票
4 回答
1024 浏览

javascript - 在 RegExp 中使用可变长度后向删除前导空格

我想知道 JavaScript 的 RegExp 引擎是否支持可变长度后向断言?

例如,我试图匹配字符串“ [很多空格和/或制表符]variable length lookbehind ”中的字符串“ variable length ”,我有类似的东西,但它在各种RegExp测试器中并不顺利:

如果它是非法模式,那么有什么好的解决方法呢?谢谢!