问题标签 [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 回答
1843 浏览

java - InputStreamReader.markSupported 为假

我需要从InputStreamReader. 为此,我想使用mark并返回该类reset,因为它不维护内部缓冲区和/或字符队列。markSupportedfalseInputStreamReader

我知道BufferedInputStreamPushbackInputStream但在这里都不合适,因为它们以字节为基础缓冲,而我需要 characters

Java 是否提供可以读取字符的缓冲字符阅读器?实际上,让我进一步限制,我只需要取消读取单个字符(用于前瞻目的)。我真的需要保持自己的前瞻吗?

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

php - 替换所有 *not* 在 " 内的 "\" 字符" tags

0 投票
3 回答
1340 浏览

regex - 查找断言和可选子字符串的问题

我正在尝试编写一些正则表达式来解析 Hyperic HQ 生成的警报中的信息。警报以电子邮件的形式出现,主题行如下:

长话短说,我需要能够始终如一地获取“Ap​​ache Web 服务器”部分,而不管主机名可能甚至不存在。我知道主机名总是以“myserver.net”结尾。

我拥有的正则表达式是:

我期望这将匹配 and 之间的零个或多个字符"Resource:""State:"可选地跟随(但不包括)主机名。

不幸的是,它返回的是"Server",即我要匹配的位的最后一个字。无论主机名是否在字符串中,都会发生这种情况。

任何人都可以帮忙吗?

编辑:下面乍得提供的解决方案

0 投票
2 回答
585 浏览

c# - .Net 中的 LookAhead Regex - 意外结果

我对我的正则表达式结果有点困惑(并且仍在尝试理解语法)。我一直在使用http://regexpal.com/来测试我的表达式,并且它的工作方式符合预期,但是在 C# 中它并不符合预期。

这是一个测试 - 以下表达式:(?=<open>).*?(?=</open>)

在输入字符串上: <open>Text 1 </open>Text 2 <open>Text 3 </open>Text 4 <open>Text 5 </open>

我希望得到<open>Text1 <open>Text 2 <open>Text 3...等的结果

但是,当我在 C# 中执行此操作时,它只返回第一个匹配项<open>Text1

如何从正则表达式中获取所有五个“结果”?

0 投票
4 回答
360 浏览

regex - 正则表达式、前瞻和后视的命名约定

为什么它是反直觉的?

/(?<!\d)\d{8}(?!\d)/,这里(?<!\d)来,但叫lookbehindnext,但叫lookahead。所有这些都是反直觉的。(?!\d)

以这种方式命名它的原因是什么?

0 投票
1 回答
2049 浏览

asp.net - 更改密码控制正则表达式仅在 IE 7 中奇怪地验证

我在我的应用程序中使用了 Asp.net 更改密码控件,直到用户告诉我她在更改密码时遇到了满足强度要求的问题,一切似乎都可以找到并且花花公子。对此进行调查,她正在使用 IE 7,无论她输入什么,验证都会失败(并且仅在 IE 7 中。Firefox、IE 8、Chrome 等都按预期工作)。这是我正在使用的正则表达式:

我已经尝试了一些我在整个网站上发现的其他一些,以及人们似乎没有问题地使用的其他一些,我遇到了同样的问题。

似乎我在最后输入的任何模式(数字、上或下 alpha)都是预计至少重复 5 次的模式。例如:

Hello1(不起作用)

11111Hello(不起作用)

Hello11111(作品)

同样,这仅在 IE 7 中。我已经在这上面花费了太多时间,我很困惑。有人有什么想法吗??

0 投票
2 回答
967 浏览

perl - 为什么积极的前瞻会导致我的 Perl 正则表达式中的捕获?

我不明白为什么这段代码有效:

我知道这是一个零宽度匹配,它没有将匹配的字符串放在 $& 中,但为什么将它放在 $1 中?

谢谢你!

0 投票
1 回答
468 浏览

regex - 正则表达式替换“编码”

我希望能够替换style=&quot;STUFF&quot;

我一直认为这是正确的正则表达式:

但由于某种原因,这不匹配。

有任何想法吗?

0 投票
4 回答
684 浏览

php - 使用字符串作为模式但将其排除在删除之外

我对正则表达式很陌生,顺便说一下,我学到了一些东西,但仍然是知识!

所以我想请你澄清它是如何工作的!

假设我有以下字符串,如您所见,它们的格式可以略有不同,但它们非常相似!

现在我想替换第一个 AZ 块冒号之间的所有内容,例如我会保留

所以根据我的菜鸟知识,我已经解决了这个糟糕的正则表达式!:-(

但为什么我确定这个正则表达式不起作用!?:-)

请帮助我!

PS:问题的标题很清楚,我也想知道如何使用众所周知的字符串块来匹配另一个......

..没有删除DTSTART

谢谢你的时间!

问候卢卡·菲洛索菲