问题标签 [regex-lookarounds]

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 投票
2 回答
309 浏览

regex - 带有特殊字符的正则表达式环视无效?

我正在尝试这个正则表达式

在这个文本上 John James Taylor

但我在这里http://www.rubular.com/r/TjD2d4oG5z得到“后向无效模式”

我正在尝试匹配前面没有 John 或 Joe 的“Taylor”。

请问有什么提示吗?

0 投票
2 回答
90 浏览

java - 正则表达式仅在捕获之前与两个相似的 URL 进行非常具体的匹配

因此,我试图仅提取特定图像的名称以及与之一起捕获的图像扩展名。唯一的问题是,有两种非常相似的形式,而两种形式只是图像 url 的显示方式。

第一个网址显示如下

唯一的问题是有时图像也会以这种方式显示:

现在我知道这无论如何都不优雅,但我必须使用这样的东西:

到目前为止,这一直运行良好,因为这两个 URL 非常相似

另一个问题是我需要纯正则表达式的解决方案。没有java,php,javascript什么都没有。甚至试图让它像这样事先尝试每个字母组合,我再次知道这是非常糟糕的方法,但我是一个正则表达式菜鸟:

唯一的问题是它总是会首先找到第一个 URL,因为它们非常相似,并且总是会捕获small/我不需要的 URL 部分。

我该怎么做?我在想也许是向前看或向后看,但我没有足够的经验来让这些工作。

编辑:核心是基于 Java 的,但在当前情况下,我不能使用 Java 来帮助解决这个问题:(

0 投票
3 回答
2096 浏览

java - 正则表达式忽略 html 标记,但从具有不同结束锚点的单词边界开始

首先让我说我需要一个仅正则表达式的解决方案。

我正在尝试使用第三个程序程序从 html 文件中提取描述。这个程序是基于java的,但我不能以任何方式操作源代码!. 我提交正则表达式的程序已经有另一个正则表达式脚本,指定从每个页面上获取描述的位置。如果您在其中定义匹配项,它具有这个方便的功能,可以进一步将该信息分解为一个数组。

我想匹配描述中的每个句子,无论它是否是列表项。摆脱标签将是理想的,因为它们会导致\b用于指定从哪里开始匹配的问题。

起初我以为我可以编写一个正则表达式解决方案来捕获单词边界和句子结尾字符之间的所有内容。像这样的事情\b([^.!]+)[.!]然后我注意到一个问题,描述有时会有一个带有列表项的附加部分。更复杂的是,有时列表项的第一部分会加粗或斜体。更罕见的是,由于我不明白的原因,其中可能会有一个随机<br>和标签......</br>

以下是一篇搞笑文章中对常见布局的示例描述:

我尝试了一些不同的东西,但我仍然是一个正则表达式新手,并且得到了各种无法正常工作的不同回报。这个从标签中的任何字母开始打破了一切:

上面的代码给出了一个这样的数组(顺序是随机的,或者至少以我不理解的方式组织)

几乎相同的同一个可能会留在一些 html 标记中,我认为这是因为li>填充了单词边界要求。注意:下面代码末尾有一个空格

这给出了一个这样的数组

就像我之前说的那样,我是一个正则表达式的菜鸟,并且非常确定我使用了错误的前瞻。

请帮我解决问题!我不知道下一步该尝试什么。

PS,文章不是我写的,是从别的网站上抄来的。不想冒犯

0 投票
2 回答
1500 浏览

java - 如果它是记录中的唯一字段,则模式/正则表达式*仅*获取一个数字

在过去的几天里,这一直让我发疯。我试图通过验证记录并同时提取字段来用一块石头杀死两只鸟。我的策略是使用正则表达式来做到这一点:

我的理解是“行中的第一个数字(记录)”。到目前为止,这在获取第一个字段(并确保它是一个数字)方面是有效的,但我想更进一步:

如何调整正则表达式以指定仅当它是唯一字段时才需要该数字?

也就是说,如果记录是简单的10,我想抓取10。但是如果记录是10 4,我不想抓取任何东西(因为这是项目的无效记录)。

我试过:

但是——令我懊恼的是——这个(以及它的任何其他排列)并没有得到任何数字。我在这里缺少什么吗?

0 投票
3 回答
196 浏览

regex - 正则表达式帮助:尝试查找电子邮件地址

尝试使用 Eclipse 正则表达式搜索在特定用户不是 user.a@domain.com 或 user.b@domain.com 的文件中查找电子邮件地址(即anything@domain.com)。

使用下面的字符串需要找到粗体项目,而其他地址需要跳过: bob@domain.com ,user.b@domain.com, andy@domain.com ,user.a@domain.com

我已经做到了以下几点,但它并没有像我认为的那样工作。\b(?!user.b)\w*@domain.com\b

0 投票
1 回答
1040 浏览

java - 在 Java 中使用 RegEx 提取括号之间的参数

我正在编写一个实用程序来从 JSP 中提取头文件的名称。我逐行阅读 JSP 并找到我需要的行没有问题。我在提取使用正则表达式所需的特定文本时遇到问题。在查看了许多类似的问题后,我遇到了障碍。

我将从内部匹配的字符串的一个示例是:

对于这个例子,我只需要 MY_HEADER。任何时候我有这个标签:

我需要介于两者之间的东西:

这是我目前拥有的(我可能会添加它不起作用):

我需要能够使用 Java RegEx API 和正则表达式来提取这些标头名称。

非常感谢您对此问题的任何帮助。谢谢!

编辑:

解决了这个问题,谢天谢地。棘手的部分是,在获得正确的正则表达式之后,必须考虑到我提供给正则表达式的字符串总是有两个“/”字符( (/"MY_HEADER"/) )需要在模式中被转义。

这是有效的(感谢帮助;-)):

0 投票
1 回答
237 浏览

regex - 查找字符串之间的指导

问题:

尝试获取所有 guid = guid 的匹配项。我希望收到一组匹配项,其中一个匹配项如下所示:

我正在尝试匹配GlobalSection(NestedProjects) = preSolution和之间的所有 guid = guid EndGlobalSection。文件中还有其他地方 guid = guid 存在。

这是一个数据片段:

我试过的:

这是我用来匹配 guid = guid 的内容

这很好用,只是它显然不区分比赛的位置。所以我从文件的其他部分收到了其他匹配项。我一直在尝试像这样使用正面的外观(有很多变化):

我是在滥用向后看还是其他什么?

0 投票
1 回答
330 浏览

regex - 有没有办法使用正匹配正则表达式运算符对字符串进行负匹配?

具体来说,有没有办法实现相当于

只使用=~,不使用否定运算符?

具体来说,我需要确保字符串与提供的值不匹配,并且测试函数采用正则表达式对象,并将它们积极地应用于值。 该值根本不能出现在搜索的字符串中,这使前瞻和后瞻断言变得复杂。

像下面这样的东西可能是一个很好的测试:

我怀疑有一种方法可以通过环视断言来做到这一点,但还没有弄明白。perl 特定的答案是可以接受的。

0 投票
2 回答
400 浏览

regex - 积极的向后看是行不通的,但向前看是有效的

我有包含所有数字的字符串。

我想检查是否:

  1. 所有数字都在 的范围内0-4,并且
  2. 字符串的最小长度应该是5

所以,我使用了这个正则表达式:

正如预期的那样,这可以完成工作

但是上面的正则表达式在正面使用时不起作用

为什么在这种情况下positive look behind不起作用但起作用look ahead

编辑

是的,我可以使用

^[0-4]{5,}$

但问题是为什么look-behind在上述情况下不起作用

这是参考THIS question where lookaheadworking but notlookbehind

0 投票
3 回答
903 浏览

javascript - 在 JavaScript 正则表达式中将可选组与前瞻匹配

我正在尝试使用正则表达式解决字符串匹配问题。我需要匹配这种形式的 URL:

我需要“拒绝”这种形式的 URL:

尾随的“/”显然是可选的。

所以基本上:

  • 在主机名之后,可以有 2 或 3 个组,如果在第二个中等于 "sets",则正则表达式不应匹配。
  • "sets"可以包含在 URL 中的任何其他位置
  • "sets"需要完全匹配

到目前为止,我想出的是http(s)?://(www\.)?soundcloud\.com/.+/(?!sets)\b(/.+)?,失败了。

有什么建议么?是否有任何库可以简化任务(例如,使斜杠可选)?