问题标签 [negative-lookahead]

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 投票
6 回答
1726 浏览

javascript - Javascript RegExp 替换为负前瞻

我正在尝试使用 JS 替换当前页面的查询字符串中的某些值。例如:从category=Old Valuecategory=New Value。代码如下所示:

它工作正常,除了带有 & 符号的值。幸运的是,所有的 & 符号都是 URL 编码的,所以我知道我应该丢弃amp;&之前。我想我应该使用前瞻,但我不知道如何。我尝试了这个正则表达式,但没有运气:/category=[^&(?!amp;)]+&?/

谢谢

0 投票
3 回答
402 浏览

regex - 正则表达式用于匹配没有 ( 之后的单词

什么正则表达式会检查一行中没有(字符的单词?我试过(\w+)(\?!\()但它不起作用,并且(\w+)[^\(]通过将最后一个字母视为[^\(]部分来匹配任何内容。我正在使用 D 编程语言。

应该匹配的例子:

它应该与asdf以下内容匹配:

但不在这些:

但是,在 中asdf(blah)blah将匹配。同样在asdf blahandasdf.beef中,blahandbeef也将被匹配。

0 投票
6 回答
1278 浏览

regex - 正则表达式负前瞻

我正在做一些正则表达式体操。我为自己设定了尝试搜索 C# 代码的任务,其中使用了 as-operator 而不是在合理的空间内进行空检查。现在我不想解析 C# 代码。例如,我想捕获代码片段,例如

但是,不捕获

也不是就此而言

因此,任何随机空检查都将算作“良好检查”,因此不会被发现。

问题是:我如何匹配某些东西,同时确保在其周围环境中找不到其他东西。

我尝试过天真的方法,寻找“as”,然后在 150 个字符内进行负前瞻。

不幸的是,上面的正则表达式匹配了上面所有的例子。我的直觉告诉我,问题是向前看然后做负向前看可以发现很多情况,其中向前看没有找到'== null'。

如果我尝试否定整个表达式,那么这也无济于事,因为它会匹配大多数 C# 代码。

0 投票
2 回答
1804 浏览

c# - 正则表达式匹配以提取多行文本区域(C#)

我正在寻找以以下格式创建的大文本块中的文本区域:

我几乎解决了这个问题

如果我在整个文本中只有一个区域,则此方法有效。但是,当有多个时,这给了我一个块,每个其他“区域”都包含在该块的“文本”中。我有一种感觉,这是要通过消极的展望来解决的,但是作为一个非正则表达式的非专业人士,我不知道如何修改上述内容以使其正确。有人可以帮忙吗?

0 投票
2 回答
1230 浏览

java - 使用零宽度断言否定前瞻来匹配包含字符串“abc”的字符串

大家好:我正在尝试使用零宽度断言否定前瞻来匹配包含字符串“abc”的字符串,这就是我得到的:

结果是:

我无法理解的是为什么字符串“abc”不匹配,它在断言“abc”之后不包含任何字符。谁能弄清楚这是如何工作的?tks~

0 投票
3 回答
1825 浏览

php - 正则表达式 - 使用负前瞻转义

我有以下 JSON 编码的字符串:

什么是转义所有(已经)转义字符/代码点\\\u0022\\\u0027的最有效方法,除了or 我虽然关于使用preg_replace()负前瞻正则表达式,但它没有像我预期的那样工作,输出应该是:

我在 JSON-PHP-PCRE 逃逸的海洋中迷失了方向,有人可以帮帮我吗?

0 投票
2 回答
1072 浏览

php - Mod Rewrite Regex - 多个负前瞻

我目前有正在工作的 Mod Rewrite Regex:

该正则表达式采用以下 URL 并将其转换为紧随其后的 URL:

www.site.com/cmd1/param/cmd2/param2/stillparam2并将其变成www.site.com/index.php?cmd1=param&cmd2=param2/stillparam2

这很好用,但我还想创建另一个否定的前瞻断言,以确保 URL 块 - 即/texthere/参数 - 不包含下划线。无效字符串可能如下所示www.test.com/cmd/thing/getparam_valuehere:正则表达式应将 解析cmd/thing为键和值对并忽略字符串的其余部分。然后,我还将编写另一个 RewriteRule 以将带有下划线的 URL 块添加为另一个 URL 参数。将发生以下 URL 转换:

如果我不够清楚,请告诉我。任何帮助都会很棒。

注意:我已经尝试使用嵌套在已经存在的一个负前瞻中(?!(?!))- 并尝试|在两个负前瞻中使用一个,但两种解决方案都没有奏效。我认为也许还有其他更根本的错误?

谢谢大家。

编辑:我也尝试了以下方法 - 我真的认为它会起作用(但显然,没有!)

执行以下操作:

www.test.com/cmd/param1/sortorder_1/翻译成 www.test.com?cmd=param1/sortorder_1/

当它应该变成:www.test.com?cmd=param1&sortorder=2/. 翻译/sortorder_2/成的规则&sortorder=2尚未创建,但您希望能明白我的意思)。

0 投票
1 回答
219 浏览

regex - 正则表达式解析器和自定义转义字符

我有一个字符串,我想从该字符串的开头挑选出子字符串,并以加号结尾。

例子:

我想挑选+name+ +b++/b+,但我当前的正则表达式将+ sign +视为一个可能的值“

这是我正在使用的正则表达式\+[\-@\w\s\d\/\!]*\+

我尝试[^/]在前面添加 a ,但这会添加之前的任何字符+并且无法处理+n++b+

我试图弄清楚环视和后视,只是不确定如何应用它。

0 投票
1 回答
344 浏览

google-analytics - 谷歌分析展望未来

我目前正在尝试在 Google Analytics 中归档网站的内部使用情况。有 10 个不同的 IP 范围可供匹配。据我所知,您不能将多个“包含”过滤器添加到一个配置文件中,因为如果所有包含过滤器都返回 true,Google Analytics 将首先返回一个真正的匹配项。要解决此问题,您可以使用竖线 (|) 并将多个范围连接到一个过滤器中。无论如何,单个过滤器的 254 个字符的限制不会为我启用此选项。

根据文档,排除过滤器的工作方式有点不同。您可以为单个配置文件设置多个排除过滤器。所以,我想出了以下使用负前瞻的解决方案。使用负前瞻应用和排除过滤器实际上会为给定范围提供匹配。

IP 范围: 212.43.120.30 到 212.43.120.40

正则表达式: ^(?!^212.43.120.(3[0-9]|40)$).*$

过滤器类型:排除

上面的 RegEx 告诉任何在该范围内不匹配的 IP 都将被排除。因此,我们将排除过滤器变成了包含过滤器。由于 Google Analytics 接受给定配置文件的多个排除过滤器,因此您实际上可以通过不同的排除过滤器添加多个范围。

然后,我注意到谷歌分析似乎根本不接受前瞻。问题是,这里和其他网站都提到了它,但我找不到谷歌记录的内容。是否有人有一个链接,谷歌解释了这一点,验证是否允许先行?有人有解决方案为单个配置文件添加多个包含过滤器吗?

0 投票
2 回答
8527 浏览

javascript - Javascript正则表达式:找到一个不跟空格字符的单词

我需要 javascript 正则表达式,它将匹配不跟空格字符并且之前有 @ 的单词,如下所示:

@bug - 找到“@bug”,因为它后面没有空格

@bug 和我 - 什么也没找到,因为“@bug”后面有空格

@bug 和 @another - 仅查找“@another”

@bug 和 @another 什么都找不到,因为这两个词后面都跟有空格。

帮助?补充:字符串是从中获取的,FF 将它自己的标签放在它的末尾。虽然我基本上只需要最后一个以@开头的单词,但不能使用$(end-of-string)。