问题标签 [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.
java - 如何匹配除一个以外的所有单词?
我正在尝试匹配以 PRE 开头并以 PRE 结尾的表达式。我正在寻找一个惰性匹配,即匹配表达式中的结尾 PRE 应该是在起始 PRE 之后找到的第一个。我试图通过负前瞻正则表达式来实现这一点,在 RegExr 上进行测试:
正则表达式:
要匹配的表达式:
上面的表达式与给定的正则表达式完全匹配,而我原本期望只匹配 PRE erp PRE。请建议一个延迟匹配以 PRE 开头和结尾的表达式的正则表达式。
regex - 匹配一个词,但不在评论中
我正在尝试匹配一个单词,但不是在它前面有评论(/*
而不是后面*/
)的情况下。到目前为止,我一直在尝试使用否定的前瞻断言来实现这一点,但没有成功。这是否可以通过消极的前瞻或消极的后视断言来实现,或者这是徒劳的努力?
java - 如何正确使用此 Java 正则表达式的负前瞻?
我希望这个 Java 正则表达式匹配两个括号之间的所有文本:
显示评论:
但它没有(如本测试所示)。
对于此输入:
%foo(%bar \(%baz\)) hello world)
我期待%bar \(%baz\)
但看到%bar \(%baz\
(没有逃脱的右括号)。我猜我对负前瞻结构的使用在某种程度上是不正确的。有人可以解释我的正则表达式的问题吗?谢谢。
java - REGEXP:捕获组不跟随
我需要匹配以下语句:
不匹配这些:
所以我认为这个正则表达式会起作用:
但它没有 - 我不知道为什么 - 我相信这可能是由捕获组(。*)引起的,所以我认为也许让 * 运算符变得懒惰会解决问题......但不是。这个正则表达式也不起作用:
谁能指出我的解决方案方向?
解决方案
要检索没有 is here
结尾的句子(如Hi there John Doe (the second)
),您应该使用(作者@Thorbear):
对于中间包含一些数据的句子(例如Hi there John Doe (the second) is here
,John Doe(第二个)是所需的数据),简单的分组就足够了:
.
java - Java 中的正则表达式环视构造:建议需要优化
我正在尝试在逗号分隔的列表中搜索文件名:
text.txt、temp_doc.doc、template.tmpl、empty.zip
我使用 Java 的正则表达式实现。输出要求如下:
- 只显示文件名而不是它们各自的扩展名
- 排除以“temp_”开头的文件
它应该看起来像:
文本
模板
空的
到目前为止,我已经设法编写或多或少令人满意的正则表达式来应对第一项任务:
我相信使其符合第二个要求的最佳选择是使用环视构造,但不确定如何编写可靠和优化的表达式。虽然下面的正则表达式似乎确实可以满足要求,但如果没有其他原因,它显然是一个有缺陷的解决方案,它依赖于显式的最大文件名长度。
PS我只研究了几天的正则表达式,所以请不要嘲笑这个新手风格的过于复杂的代码:)
regex - 正则表达式匹配不以模式结尾的字符串?
我正在尝试形成一个正则表达式,它将匹配不以 DOT FOLLOWED BY NUMBER 结尾的字符串。
例如。
我想匹配前三个。
我尝试修改这篇文章,但它对我不起作用,因为数字可能有可变长度。
有人可以帮忙吗?
python - 正则表达式替换为 Python 中的否定前瞻
我正在尝试删除常规文本周围的单引号。例如,给定列表:
我想将“'ABC'”变成“ABC”,但保留其他引号,即:
我尝试使用如下外观:
但收到错误消息:
还有其他解决方法吗?提前非常感谢!
php - 正则表达式在 2 个字符串之间查找一个字符串,该字符串位于 2 个子字符串不能包含单词的字符串之间
我的问题的标题有点复杂,我知道,但这基本上是我想做的:
假设我有这段文字:
会有一个正则表达式,它可以让我找到:
- [td] 和 [/td] 标记之间的字符串
- 其中从 [td] 到 [/td] 的整个部分本身就在 [table] 和 [/table] 标记之间
- [table] 和 [td] 标签之间的文本不能包含 [/table] 标签
- [/td] 和 [/table] 标签之间的文本不能包含
[table] 标签
这听起来很明显,但它应该是一个安全的正则表达式,因为这个正则表达式将用于处理用户输入,如果用户要在表格之外输入 [td](所有标签都转换为 html),它可以影响用于我网站页面布局的表格。
所以它应该首先匹配“test str 1”,然后再匹配“test str 2”,但前提是该字符串在 td 标记内,而 td 标记又应该在表标记内,而表标记之间可能不是另一个表标记.
这与我得到的一样接近:
但我认为我在 table 标签不应该存在的部分中遗漏了一些东西,所以在 table 和 td 标签之间。
php - 带有负前瞻的正则表达式忽略“类”这个词
我对此感到疯狂,它是如此简单,但我无法找出正确的正则表达式。我需要一个匹配列入黑名单的单词的正则表达式,即“ass”。
例如,在这个字符串中:
我试过那个正则表达式:
这与单词“bass”bot NOT“class”中的“ass”匹配。这个正则表达式在这两种情况下都标记了“ass”。我在谷歌上检查了多个负面的前瞻,但没有一个有效。
注意:这是针对 CMS,版主可以轻松找到潜在的坏词,我知道您不能依靠计算机进行过滤。