问题标签 [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.
regex - 正则表达式后视问题
我用
匹配像 ##MyString## 这样的字符串,但不是以下形式:
这适用于上述形式,但不适用于此:(它仍然匹配,不应该匹配)
我试过:
没有运气。任何建议将不胜感激。
编辑:我正在使用 PHP preg_match() 函数
regex - 查找断言和可选子字符串的问题
我正在尝试编写一些正则表达式来解析 Hyperic HQ 生成的警报中的信息。警报以电子邮件的形式出现,主题行如下:
长话短说,我需要能够始终如一地获取“Apache Web 服务器”部分,而不管主机名可能甚至不存在。我知道主机名总是以“myserver.net”结尾。
我拥有的正则表达式是:
我期望这将匹配 and 之间的零个或多个字符"Resource:"
,"State:"
可选地跟随(但不包括)主机名。
不幸的是,它返回的是"Server"
,即我要匹配的位的最后一个字。无论主机名是否在字符串中,都会发生这种情况。
任何人都可以帮忙吗?
编辑:下面乍得提供的解决方案
regex - 你能挽救我的负面回顾例子吗?
在Mastering Perl的“高级正则表达式”一章中,我有一个损坏的示例,我无法找到一个很好的修复方法。这个例子可能是为了自己的利益而试图过于聪明,但也许有人可以为我解决它。里面可能有这本书的免费副本,用于修复工作。:)
在讨论环视的部分中,我想使用否定的环视来实现带有小数部分的数字的 commifying 例程。关键是要使用负面的回顾,因为那是主题。
我愚蠢地这样做了:
(?<!\.\d)
断言 之前的位不是(?=(?:\d\d\d)+\b)
小数点和数字。
愚蠢的事情是没有努力去打破它。通过在末尾添加另一个数字,现在有一组三个数字,前面没有小数点和一个数字:
如果在 Perl 中lookbehinds 可以是可变宽度,这将非常容易。但他们不能。
请注意,在没有负面回顾的情况下很容易做到这一点,但这不是示例的重点。有没有办法挽救这个例子?
regex - 正则表达式、前瞻和后视的命名约定
为什么它是反直觉的?
/(?<!\d)\d{8}(?!\d)/
,这里先(?<!\d)
来,但叫lookbehind,next,但叫lookahead。所有这些都是反直觉的。(?!\d)
以这种方式命名它的原因是什么?
java - RegEx Advanced : 正向回顾
这是我的测试字符串:
我想在 rel 属性之间获取每个 JSON 形成的元素。它适用于第一个元素(objectid)。
这是我的 ReqEx,效果很好:
但我想做这样的事情,这是行不通的:
所以我可以解析搜索字符串的每个元素。
我正在使用 Java-ReqEx
java - Java 正则表达式视图状态
我正在将一些功能从 C++ 应用程序移植到 java。这涉及读取包含正则表达式的不可修改的数据文件。
许多数据文件包含类似于以下内容的正则表达式:
这些正则表达式会产生以下错误:
在 C++ 中,所使用的引擎支持这些表达式。是否有另一种形式的正则表达式可以产生相同的结果,可以使用像我的示例这样的表达式作为输入来生成?
php - 需要可变宽度负后视替换
我在这里(以及更多网站)查看了许多问题,并提供了一些提示,但没有一个给我明确的答案。我知道正则表达式,但我远非大师。这个特定的问题涉及 PHP 中的正则表达式。
我需要在文本中找到未被给定类的超链接包围的单词。例如,我可能有
我需要匹配第二只和第三只大象而不是第一只(由测试类“no_check”标识)。请注意,超链接中的属性可能不仅仅是 href 和 class。我想出了
它在正则表达式测试软件中运行良好,但在 PHP 中却不行。
任何帮助是极大的赞赏。如果您不能提供正则表达式,但可以找到某种 PHP 代码逻辑来规避对它的需求,我将同样感激。
php - 使用字符串作为模式但将其排除在删除之外
我对正则表达式很陌生,顺便说一下,我学到了一些东西,但仍然是知识!
所以我想请你澄清它是如何工作的!
假设我有以下字符串,如您所见,它们的格式可以略有不同,但它们非常相似!
现在我想替换第一个 AZ 块和冒号之间的所有内容,例如我会保留
所以根据我的菜鸟知识,我已经解决了这个糟糕的正则表达式!:-(
但为什么我确定这个正则表达式不起作用!?:-)
请帮助我!
PS:问题的标题很清楚,我也想知道如何使用众所周知的字符串块来匹配另一个......
..没有删除DTSTART
谢谢你的时间!
问候卢卡·菲洛索菲
java - 后向引用
您可以在后视中使用反向引用吗?
假设我想split
在我身后的任何地方重复两次。
使用REGEX2
(其中反向引用是嵌套在一个lookbehind 中的一个lookahead 中)可以工作,但REGEX1
在运行时会出现此错误:
我想这是\1
有道理的,因为通常反向引用可以捕获任何长度的字符串(如果正则表达式编译器更聪明一点,它可以确定(.)
在这种情况下,因此具有有限长度)。
那么有没有办法在后视中使用反向引用?
如果没有,您是否可以始终使用这种嵌套的前瞻来解决它?还有其他常用的技术吗?
javascript - 在 RegExp 中使用可变长度后向删除前导空格
我想知道 JavaScript 的 RegExp 引擎是否支持可变长度后向断言?
例如,我试图匹配字符串“ [很多空格和/或制表符]variable length lookbehind ”中的字符串“ variable length ”,我有类似的东西,但它在各种RegExp测试器中并不顺利:
如果它是非法模式,那么有什么好的解决方法呢?谢谢!