问题标签 [regex-negation]

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 投票
4 回答
11172 浏览

c# - 正则表达式匹配不是特定子字符串的内容

我正在寻找一个正则表达式,它将匹配以一个子字符串开头且不以某个子字符串结尾的字符串。

例子:

应该匹配以“foo”开头且不以“bar”结尾的任何内容。我知道 [^...] 语法,但我找不到任何可以为字符串而不是单个字符执行此操作的内容。

我专门尝试为 Java 的正则表达式执行此操作,但我之前遇到过此问题,因此其他正则表达式引擎的答案也会很棒。

感谢@Kibbee 验证这也适用于 C#。

0 投票
7 回答
91634 浏览

regex - 排除关键字集的正则表达式

我想要一个在遇到诸如“boon.ini”和“http”之类的词时会失败的表达式。目标是采用此表达式并能够为任何一组关键字构建。

0 投票
6 回答
86040 浏览

.net - RegEx 判断字符串是否不包含特定字符

这次很简单的问题。

我正在尝试使用正则表达式测试字符串是否不包含字符。我认为表达式的形式是“[^ x ]”,其中x是您不想出现的字符,但这似乎不起作用。

例如,

两者都返回真(我希望假)。

我开始使用"[^&]"并认为可能需要将 & 转义为 \&,但这似乎没有什么不同。

想法?我认为这是一件小事。

另外,我使用的是 .NET,所以请记住这一点。

编辑1:

我找到了这个,但它似乎没有回答我遇到的问题。

编辑2:

我想回应KevinJoel的建议。这些建议确实会更快,但在这种情况下它们并没有实现我需要的灵活性,所以如果你通过搜索找到了这个问题,一定要看看他们的答案是否符合你的需求。在我的例子中,正则表达式被传递给 DataTable 验证方法,该方法循环遍历每一行并验证特定列中该行的内容是否与传入的 RegEx 匹配。因为我将重用这个方法对于正在验证的其他几个数据表,我想:

  1. 使用 Regex 启用最广泛的验证,以及
  2. 始终寻找正匹配(即,而不是使用 !Regex.IsMatch(cell, regexvariable),我希望始终能够使用 Regex.IsMatch(cell, regexvariable),因为大多数调用此方法的 DataTables 将使用正匹配而不是负匹配。

希望这会有所帮助。

0 投票
31 回答
4215168 浏览

regex - 正则表达式匹配不包含单词的行

我知道可以匹配一个单词,然后使用其他工具(例如grep -v)反转匹配项。但是,是否可以匹配不包含特定单词的行,例如hede,使用正则表达式?

输入:

代码:

期望的输出:

0 投票
4 回答
20044 浏览

regex - 正则表达式:通过排除匹配,没有前瞻 - 有可能吗?

在某些正则表达式风格中,不支持 [负] 零宽度断言(前瞻/后瞻)。

这使得声明排除非常困难(不可能?)。例如“每行没有“foo”的行”,像这样:

完全不使用环视能否实现相同的目标(暂时搁置复杂性和性能问题)?

0 投票
4 回答
14864 浏览

java - 您将如何使用正则表达式来忽略包含特定子字符串的字符串?

我将如何使用否定的lookbehind(或任何其他方法)正则表达式来忽略包含特定子字符串的字符串?

我已经阅读了之前的两个 stackoverflow 问题:
java-regexp-for-file-filtering
regex-to-match-against-something-that-is-not-a-specific-substring

它们几乎是我想要的......我的问题是字符串没有以我想要忽略的结尾。如果这样做,这将不是问题。

我有一种感觉,这与环视是零宽度的事实有关,并且在第二次通过字符串时匹配...但是,我不太确定内部结构。

无论如何,如果有人愿意花时间解释一下,我将不胜感激。

这是我想忽略的输入字符串的示例:

192.168.1.10 - - [08/Feb/2009:16:33:54 -0800] “GET /FOO/BAR/HTTP/1.1”200 2246

这是我想保留以供进一步评估的输入字符串的示例:

192.168.1.10 - - [08/Feb/2009:16:33:54 -0800] “GET /FOO/BAR/content.js HTTP/1.1”200 2246

对我来说,关键是我想忽略任何在文档根默认页面之后的 HTTP GET。

以下是我的小测试工具和迄今为止我提出的最好的 RegEx。

0 投票
7 回答
195523 浏览

regex - 不包含特定字符串的正则表达式

我有这样的东西

阿巴布卡布达

为了选择由a包裹的最小组,我有这个/a([^a]*)a/,它工作得很好

但是我对由aa包裹的组有问题,我需要类似 /aa([^aa]*)aa/的东西不起作用,而且我不能使用第一个 like /aa([^a]*)aa/,因为它会在第一次出现时结束a,我不想要.

一般来说,有什么办法可以说不包含字符串,就像我可以说不包含字符一样[^a]

简单地说,我需要aa后跟除序列aa之外的任何字符,然后以aa结尾

0 投票
1 回答
2400 浏览

regex - 删除除撇号 Regex 之外的标点符号

preg_replace ("/(\p{P})/", ' ', $str)删除撇号,它不应该。请帮忙

0 投票
4 回答
9780 浏览

regex - 如何获得正则表达式的逆?

假设我有一个正则表达式可以正常工作以查找文本文件中的所有 URL:

如果我想要的不是 URL 而是相反的 - 除了 URL 之外的所有其他文本 - 是否有一个简单的修改可以得到这个?

0 投票
5 回答
9828 浏览

ruby - 正则表达式匹配 string1,除非前面有 string2

使用 Ruby,我如何使用单个正则表达式来匹配“xy y ay xy +y”中所有出现的“y”,但前面没有 x (y, ay, +y)?
/[^x]y/ 也匹配前面的字符,所以我需要一个替代...