问题标签 [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.
java - InputStreamReader.markSupported 为假
我需要从InputStreamReader
. 为此,我想使用mark
并返回该类reset
,因为它不维护内部缓冲区和/或字符队列。markSupported
false
InputStreamReader
我知道BufferedInputStream
,PushbackInputStream
但在这里都不合适,因为它们以字节为基础缓冲,而我需要 characters。
Java 是否提供可以读取字符的缓冲字符阅读器?实际上,让我进一步限制,我只需要取消读取单个字符(用于前瞻目的)。我真的需要保持自己的前瞻吗?
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 - 您不能将双负前瞻互换为正前瞻。
regex - 查找断言和可选子字符串的问题
我正在尝试编写一些正则表达式来解析 Hyperic HQ 生成的警报中的信息。警报以电子邮件的形式出现,主题行如下:
长话短说,我需要能够始终如一地获取“Apache Web 服务器”部分,而不管主机名可能甚至不存在。我知道主机名总是以“myserver.net”结尾。
我拥有的正则表达式是:
我期望这将匹配 and 之间的零个或多个字符"Resource:"
,"State:"
可选地跟随(但不包括)主机名。
不幸的是,它返回的是"Server"
,即我要匹配的位的最后一个字。无论主机名是否在字符串中,都会发生这种情况。
任何人都可以帮忙吗?
编辑:下面乍得提供的解决方案
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
如何从正则表达式中获取所有五个“结果”?
regex - 正则表达式、前瞻和后视的命名约定
为什么它是反直觉的?
/(?<!\d)\d{8}(?!\d)/
,这里先(?<!\d)
来,但叫lookbehind,next,但叫lookahead。所有这些都是反直觉的。(?!\d)
以这种方式命名它的原因是什么?
asp.net - 更改密码控制正则表达式仅在 IE 7 中奇怪地验证
我在我的应用程序中使用了 Asp.net 更改密码控件,直到用户告诉我她在更改密码时遇到了满足强度要求的问题,一切似乎都可以找到并且花花公子。对此进行调查,她正在使用 IE 7,无论她输入什么,验证都会失败(并且仅在 IE 7 中。Firefox、IE 8、Chrome 等都按预期工作)。这是我正在使用的正则表达式:
我已经尝试了一些我在整个网站上发现的其他一些,以及人们似乎没有问题地使用的其他一些,我遇到了同样的问题。
似乎我在最后输入的任何模式(数字、上或下 alpha)都是预计至少重复 5 次的模式。例如:
Hello1
(不起作用)
11111Hello
(不起作用)
Hello11111
(作品)
同样,这仅在 IE 7 中。我已经在这上面花费了太多时间,我很困惑。有人有什么想法吗??
perl - 为什么积极的前瞻会导致我的 Perl 正则表达式中的捕获?
我不明白为什么这段代码有效:
我知道这是一个零宽度匹配,它没有将匹配的字符串放在 $& 中,但为什么将它放在 $1 中?
谢谢你!
regex - 正则表达式替换“编码”
我希望能够替换style="STUFF"
我一直认为这是正确的正则表达式:
但由于某种原因,这不匹配。
有任何想法吗?
php - 使用字符串作为模式但将其排除在删除之外
我对正则表达式很陌生,顺便说一下,我学到了一些东西,但仍然是知识!
所以我想请你澄清它是如何工作的!
假设我有以下字符串,如您所见,它们的格式可以略有不同,但它们非常相似!
现在我想替换第一个 AZ 块和冒号之间的所有内容,例如我会保留
所以根据我的菜鸟知识,我已经解决了这个糟糕的正则表达式!:-(
但为什么我确定这个正则表达式不起作用!?:-)
请帮助我!
PS:问题的标题很清楚,我也想知道如何使用众所周知的字符串块来匹配另一个......
..没有删除DTSTART
谢谢你的时间!
问候卢卡·菲洛索菲