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

java - 如何匹配除一个以外的所有单词?

我正在尝试匹配以 PRE 开头并以 PRE 结尾的表达式。我正在寻找一个惰性匹配,即匹配表达式中的结尾 PRE 应该是在起始 PRE 之后找到的第一个。我试图通过负前瞻正则表达式来实现这一点,在 RegExr 上进行测试:

正则表达式:

要匹配的表达式:

上面的表达式与给定的正则表达式完全匹配,而我原本期望只匹配 PRE erp PRE。请建议一个延迟匹配以 PRE 开头和结尾的表达式的正则表达式。

0 投票
1 回答
125 浏览

regex - 匹配一个词,但不在评论中

我正在尝试匹配一个单词,但不是在它前面有评论(/*而不是后面*/)的情况下。到目前为止,我一直在尝试使用否定的前瞻断言来实现这一点,但没有成功。这是否可以通过消极的前瞻或消极的后视断言来实现,或者这是徒劳的努力?

0 投票
2 回答
670 浏览

java - 如何正确使用此 Java 正则表达式的负前瞻?

我希望这个 Java 正则表达式匹配两个括号之间的所有文本:

显示评论:

但它没有(如本测试所示)。

对于此输入:

%foo(%bar \(%baz\)) hello world)

我期待%bar \(%baz\)但看到%bar \(%baz\(没有逃脱的右括号)。我猜我对负前瞻结构的使用在某种程度上是不正确的。有人可以解释我的正则表达式的问题吗?谢谢。

0 投票
3 回答
2658 浏览

java - REGEXP:捕获组不跟随

我需要匹配以下语句:

不匹配这些:

所以我认为这个正则表达式会起作用:

但它没有 - 我不知道为什么 - 我相信这可能是由捕获组(。*)引起的,所以我认为也许让 * 运算符变得懒惰会解决问题......但不是。这个正则表达式也不起作用:

谁能指出我的解决方案方向?

解决方案

要检索没有 is here结尾的句子(如Hi there John Doe (the second)),您应该使用(作者@Thorbear):

对于中间包含一些数据的句子(例如Hi there John Doe (the second) is hereJohn Doe(第二个)是所需的数据),简单的分组就足够了:

.

0 投票
3 回答
249 浏览

java - Java 中的正则表达式环视构造:建议需要优化

我正在尝试在逗号分隔的列表中搜索文件名:

text.txt、temp_doc.doc、template.tmpl、empty.zip

我使用 Java 的正则表达式实现。输出要求如下:

  1. 只显示文件名而不是它们各自的扩展名
  2. 排除以“temp_”开头的文件

它应该看起来像:

文本

模板

空的

到目前为止,我已经设法编写或多或少令人满意的正则表达式来应对第一项任务:

我相信使其符合第二个要求的最佳选择是使用环视构造,但不确定如何编写可靠和优化的表达式。虽然下面的正则表达式似乎确实可以满足要求,但如果没有其他原因,它显然是一个有缺陷的解决方案,它依赖于显式的最大文件名长度。

PS我只研究了几天的正则表达式,所以请不要嘲笑这个新手风格的过于复杂的代码:)

0 投票
3 回答
6622 浏览

regex - 正则表达式匹配不以模式结尾的字符串?

我正在尝试形成一个正则表达式,它将匹配不以 DOT FOLLOWED BY NUMBER 结尾的字符串。

例如。

我想匹配前三个。
我尝试修改这篇文章,但它对我不起作用,因为数字可能有可变长度。

有人可以帮忙吗?

0 投票
2 回答
1972 浏览

python - 正则表达式替换为 Python 中的否定前瞻

我正在尝试删除常规文本周围的单引号。例如,给定列表:

我想将“'ABC'”变成“ABC”,但保留其他引号,即:

我尝试使用如下外观:

但收到错误消息:

还有其他解决方法吗?提前非常感谢!

0 投票
1 回答
369 浏览

regex - 正则表达式的相反结果

我有这个正则表达式

匹配字符串,如

我想得到这个正则表达式的逆结果。我浏览了网络和堆栈溢出,发现

应该做的伎俩,但事实并非如此。

谁能指出我正确的方向?

0 投票
1 回答
197 浏览

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 标签之间。

0 投票
3 回答
3199 浏览

php - 带有负前瞻的正则表达式忽略“类”这个词

我对此感到疯狂,它是如此简单,但我无法找出正确的正则表达式。我需要一个匹配列入黑名单的单词的正则表达式,即“ass”。

例如,在这个字符串中:

我试过那个正则表达式:

这与单词“bass”bot NOT“class”中的“ass”匹配。这个正则表达式在这两种情况下都标记了“ass”。我在谷歌上检查了多个负面的前瞻,但没有一个有效。

注意:这是针对 CMS,版主可以轻松找到潜在的坏词,我知道您不能依靠计算机进行过滤。