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

regex - 匹配服务器目录的负前瞻无法正常工作

鉴于以下 3 个代表服务器路径的示例路径,我试图通过 PCRE 正则表达式为我的 FTP 客户端创建一个跳过列表,但似乎无法获得预期的结果。

我想跳过所有不以结尾的文件夹(不是路径)

我试图在这个在线帮助和这个正则表达式测试器的帮助下创建一个工作模式,但是除了这个负前瞻模式之外别无他法

但是对于此模式,所有行都匹配,因为对于所有这些行,直到该模式的子字符串都不包含该模式。

我的错误是什么?正确的模式如何仅匹配第二行和第三行作为要跳过的行但保留第一行?

编辑以使其更清楚要突出显示的内容和不突出的内容。

从路径开头到最后一个斜杠的所有内容都必须被忽略(允许)。必须跳过与定义的正则表达式匹配的最后一个斜杠之后的所有内容。

看截图

编辑以呈现仅匹配红色部分的高级模式

正则表达式可视化

调试演示

0 投票
2 回答
1737 浏览

javascript - 正则表达式匹配 domain.com 但不匹配 @domain.com

这应该很简单,但它让我望而却步。有许多好的和坏的正则表达式方法来匹配一个 URL,有或没有协议,有或没有 www。我遇到的问题是(在 javascript 中):如果我使用正则表达式匹配文本字符串中的 URL,并将其设置为仅匹配“domain.com”,它还会捕获电子邮件地址的域( '@'之后的部分),我不想要。消极的后视解决了它 - 但显然不是在 JS 中。

这是迄今为止我最近的成功:

但如果匹配项不在字符串的开头,则会失败。而且我确定我以错误的方式处理它。那里有一个简单的答案吗?

编辑:修改正则表达式以回应下面的一些评论(坚持使用“www”而不是允许子域:

然而,正如评论中提到的,这仍然与@之后的域匹配。

谢谢

0 投票
2 回答
229 浏览

ruby - 正则表达式前瞻/后视评论

我有一个来自配置文件的片段,我需要能够匹配指定的字符串引用内容,但只有当它们没有被注释掉时,这是我当前的正则表达式:

我觉得这应该工作?我是这样读的:

(?<!=#)向后看以确保它前面没有#

test\.this\.regex\s+\"(.*?)\"火柴test.this.regex "sup1"

这是配置片段

但我的正则表达式匹配所有 4 次:

0 投票
1 回答
68 浏览

regex - 不是电子邮件的正则表达式匹配网站

我正在尝试在不匹配电子邮件地址的情况下提取网站。

换句话说,如果我的联系部分有

电子邮件:a@gmail.com ---- 网站:www.company.com

我想要不匹配 gmail.com的 www.company.com 。

到目前为止,我已经尝试了所有我能想到的,到目前为止我所拥有的最好的是

但这仍然会匹配 a@gmail.com 中的 gmail.com。

我承认我的正则表达式技能不是最强的,我已经完成了关于负前瞻/落后等的研究,但我仍然不知道如何做到这一点。

0 投票
3 回答
392 浏览

javascript - 为什么 JavaScript 没有lookbehinds?

我知道有各种解决方法,但奇怪的是 JavaScript 中没有一个非常常见/有用的正则表达式功能。

是否有任何原因(性能问题、实施问题等),还是一开始没有添加它,现在为时已晚/不需要?

0 投票
2 回答
91 浏览

regex - 这种消极的追溯是如何运作的?

此代码片段来自《精通正则表达式》一书。我无法理解带有负面回顾的最后一部分(评论 # Not allowed to end with [.,?!])。该表达式将如何[?!,.]http://www.google.com/foo!or中删除http://www.google.com/bar\!

0 投票
3 回答
1426 浏览

regex - 正则表达式 - 搜索以逗号或引号开头且小数点前没有数字的数字

因此,我一直在尝试在 CSV 文件上的 Sublime 文本中执行正则表达式,以查找小数点前没有任何数字的任何数字。基本上,我需要在文档中找到“.xx 或 ,.xx 的任何组合,然后在后面添加一个逗号。我尝试从正端(即任何带有 , 或“的 .xx)和负端攻击它向后查找前面没有数字的 .xx。似乎没有任何效果,但由于我是正则表达式的新手,我确信我的语法错误。任何帮助将不胜感激。

现在我有这个

这绝对行不通。

0 投票
1 回答
2708 浏览

javascript - Javascript 正则表达式;查找“x”,但如果前面有“y”则不查找

像“pie”这个词之前没有“pizza”这个词。我对正则表达式相当陌生,这个问题一直给我带来麻烦。

如果您可以使用 JavaScript 正则表达式语法提供答案,我会非常感激。

编辑:我可以通过在两个单独的正则表达式中单独搜索字符串“pizza pie”和“pie”来复制该功能,并且只计算出现在第二个查找而不是第一个查找中的字符串索引。这是一个复杂的解决方案,速度不是很快,但可以很容易地多线程,所以我想没关系。

0 投票
2 回答
65 浏览

javascript - Negative Lookbehind: Match a substring that's not preceded one of a set of characters

Question

How do you define a regular expression that will match each substring that:

  • ends a line
  • is not preceded by one of a given set of characters

Case

I have a function that removes hardcoded newlines from strings of text, so they will reflow properly. The function works fine, apart from intelligently handling hyphenation.

This is a simplified version of what I have for hyphens.

It works on things it should work on, no problem. So this...

...becomes...

But it goes too far, and doesn't handle dashes properly, so these examples get garbled:

The function should only consider the -\n pattern a match if it's not preceded by a hyphen or any kind of whitespace character.

0 投票
2 回答
560 浏览

regex - 正则表达式:如何在 PL/SQL 中实现负向后查找

如何匹配所有以 开头loockup.和结尾_id但没有前缀的字符串msg?下面是一些例子:

我知道甲骨文不支持消极的后视(即(?<!))......所以我试图明确列举使用交替的可能性:

第二个regexp_count表达式不应该匹配......但它确实喜欢第一个。我错过了什么吗?

编辑

在实际用例中,我有一个字符串,其中包含可能包含多个lookup.xxx_id实例的 PL/SQL 代码:

我需要确定是否至少有一个错误lookup,即所有出现的地方,除了lookup.msg_id,还必须指定key_type参数。