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

c# - 没有单个字母分隔符的正则表达式匹配

Medicare 资格 EDI 示例响应是我想要匹配的内容。

我有一个看起来像这样的字符串:

我需要一组看起来像这样的匹配:

我整天都在处理这个问题,我似乎无法得到一个可接受的匹配方案。如果我想不通,我将使用 for 循环对它进行程序化编程并查找冒号索引。

我尝试过使用负前瞻,但我一无所获。这是 C#,我在测试时使用这个测试器(.Net) 以及Regex Coach (非 .Net)。

我试过用这个:

但这仅匹配键及其冒号,例如“LN:”,“FN:”等。

如果我使用:

它也消耗下一个匹配的两个字符键和冒号,导致我只匹配每个其他键/值对。

有没有办法让我在 .Net 中正确使用 RegEx 匹配这些,还是我坚持使用更程序化的解决方案?请记住,我不能假设键总是大写字母。它们可能包含数字,但它们始终是两个字符,然后是一个冒号。

提前感谢我能得到的任何帮助。

0 投票
4 回答
22427 浏览

regex - 需要一个正则表达式来匹配不能全为零的可变长度数字字符串

我需要验证表单上的输入。我希望输入是 1 到 19 位之间的数字。输入也可以从零开始。但是,我想验证它们并非全为零。我有一个正则表达式,可以确保输入是数字并且介于 1 到 19 个数字之间。

但我不知道如何检查整个字符串是否全为零。我试过这个

但它在 00000000000000000001 上失败,因为它允许可变数量的零。

如何检查整个字符串不为零?

谢谢。

我正在尝试在 ASP.NET RegularExpressionValidator 中执行此操作,因此我希望使用单个表达式。我还有其他选择,所以如果不能做到这一点,我也不会不走运。

0 投票
2 回答
686 浏览

php - 替换本地链接,保留外部链接

我有一个 API 调用,它本质上返回托管 wiki 应用程序页面的 HTML。然后我根据我的网站风格指南做一些 substr、str_replace 和 preg_replace 功夫来格式化它。

我做了一组调用来格式化我的左侧导航(将指向 pageX 的链接更改为我的 wikiParse?page=pageX 类型的东西)。我可以在左侧导航中安全地执行此操作。然而,在正文中,我不能安全地假设链接是指向内部页面的链接。它很可能是指向外部资源的链接。所以我需要做一个 preg_replace 匹配 href= 后面没有 http://。

这是我的尝试:

这似乎去除了页面上的全部内容。有人看到我在哪里滑倒了吗?我不认为我离得太远了,只是看不到下一步该去哪里。

干杯

0 投票
2 回答
56795 浏览

regex - 使用正则表达式的字符串否定

是否可以在正则表达式中进行字符串否定?我需要匹配所有不包含字符串的字符串".."。我知道您可以使用它^[^\.]*$来匹配所有不包含"."但我需要匹配多个字符的字符串。我知道我可以简单地匹配一个包含".."然后否定匹配的返回值来获得相同结果的字符串,但我只是想知道这是否可能。

0 投票
6 回答
2436 浏览

regex - 如何在正则表达式中结合正负条件?

我对正则表达式相当陌生,需要一些帮助。我需要在 Perl 中使用正则表达式过滤一些行。我将把正则表达式传递给另一个函数,所以它需要在一行中完成。

我只想选择包含"too long"且不以开头的行"SKIPPING"

这是我的测试字符串:


跳过这个债券,因为到期太长了 TKIPPing 这个债券,因为到期太长了拍
这个债券,因为到期太长了
你好,这个期限太长了,
这个太长了
你好

正则表达式规则应与“太长”的以下内容匹配:


跳过这个债券,因为 它
到期太久

它应该跳过:

“你好”,因为它不包含“太长”
“跳过这个债券,因为到期时间太长”,因为它不包含“跳过”

0 投票
6 回答
11856 浏览

regex - Regex: what does (?! ...) mean?

The following regex finds text between substrings FTW and ODP.

What does the (?!...) do?

0 投票
2 回答
4718 浏览

java - Java 正则表达式不起作用 - 为什么?

match.matches() 返回 false。这很奇怪,因为如果我使用这个正则表达式并测试字符串到 rubular.com,就会显示两个匹配项。我究竟做错了什么?

0 投票
2 回答
382 浏览

.net - 执行此操作的替代正则表达式 "\.(asmx(?!/js)|aspx|htm)"

有没有办法重写这个正则表达式,使其不包括“/js”的前瞻?

就性能而言,这甚至是我应该担心的事情吗?它被用于过滤 HTTP 请求。

编辑: 要明确:我想特别阻止“.asmx/js”,但允许所有其他 .asmx 请求通过。

0 投票
3 回答
142792 浏览

regex - 正则表达式负前瞻

在我的主目录中,我有一个包含 Drupal 平台的文件夹 drupal-6.14。

在此目录中,我使用以下命令:

该命令的作用是压缩文件夹drupal-6.14,不包括drupal-6.14/sites/ 的所有子文件夹,包括它所包含的sites/all 和 sites/default 。

我的问题是关于正则表达式:

该表达式可以排除我想要排除的所有文件夹,但我不太明白为什么。

使用正则表达式是一项常见的任务

匹配所有字符串,不包含子模式 x的字符串除外。或者换句话说,否定子模式。

我(认为)我理解解决这些问题的一般策略是使用负面的前瞻,但我从来没有达到令人满意的程度理解积极和消极的前瞻(前/后)是如何工作的。

这些年来,我读过很多关于他们的网站。PHP 和 Python 正则表达式手册,其他页面,如http://www.regular-expressions.info/lookaround.html等等,但我从来没有真正对它们有过深入的了解。

有人可以解释一下这是如何工作的,也许可以提供一些类似的例子来做类似的事情?

-- 更新一:

关于 Andomar 的回应:双否定前瞻能否更简洁地表示为单个肯定前瞻语句:

即是:

相当于:

???

-- 更新二:

根据@andomar 和@alan moore - 您不能将双负前瞻互换为正前瞻。

0 投票
5 回答
5098 浏览

regex - RegExp:想要查找所有不以“.html”结尾的链接

我是正则表达式的新手(尽管我已经成功使用过很多次)。我想查找文档中所有不以“.html”结尾的链接我想出的正则表达式是:

在我的编辑器 Notepad++ 中,href=\"([^"]*)\"找到所有链接(以“html”结尾的链接和不以“html”结尾的链接)。为什么消极的lookbehind不起作用?

我也尝试过前瞻:

但这也没有用。

有人可以帮忙吗?

干杯,卑躬屈膝