Regex 一个正则表达式模式,而不是另一个

Regex 一个正则表达式模式,而不是另一个,regex,Regex,下面是示例文本,我需要提取5到7位之间的所有数字,我可以使用[0-9]{5,7}+ 但是,我不希望匹配具有前缀XXX-YYY-2763464823,上面的表达式将捕获该前缀 我一直在尝试消极的前瞻和落后,但都没有成功。如果你尝试过这样的事情 (?!XXX-YYY-[0-9]+)[0-9]{5,7}+和其他不起作用的变体 此外,一旦我有了正确的匹配,我将需要删除除匹配本身以外的所有内容。这可以通过 (正则表达式模式)|.并替换为(?{1}$1\n:) 非常感谢您提供的任何帮助,请提前向您表示感谢。

下面是示例文本,我需要提取5到7位之间的所有数字,我可以使用
[0-9]{5,7}+

但是,我不希望匹配具有前缀XXX-YYY-2763464823,上面的表达式将捕获该前缀

我一直在尝试消极的前瞻和落后,但都没有成功。如果你尝试过这样的事情

(?!XXX-YYY-[0-9]+)[0-9]{5,7}+
和其他不起作用的变体

此外,一旦我有了正确的匹配,我将需要删除除匹配本身以外的所有内容。这可以通过

(正则表达式模式)|.并替换为(?{1}$1\n:)


非常感谢您提供的任何帮助,请提前向您表示感谢。

如果您试图不匹配在所选数字之前发生的某些事情,则这是反向查找。您可以假设
(?会做您想做的事情

但这并不是因为,如果所选数字在
XXX-YYY-0
之后开始,则满足负查找(除非
XXX-YYY-
后面紧跟五位数字,否则这总是正确的)

如果您使用此
(?然后,如果所选数字在
XXX-YYY-
之后开始,则满足负查找(这始终是真的)

而且你不能把一些东西放在与任意长度的数字相匹配的lookback中,所以你不能用一个lookback同时保护它们

工作原理是
(?因为这会检查所选数字之前是否没有
XXX-YYY-
,以及所选数字之前是否有数字。这两种情况都会考虑在内-所选数字必须位于数字字符串的开头,并且不能立即跟随
XXX-YYY-
,这正是您所要求的

但是,另一件事是,如果您有一个长度超过七位且没有
XXX-YYY-
的数字,则正则表达式将只匹配该数字的前七位,这不是您想要的

因此,您应该使用
(?来获取不在
XXX-YYY-
后面的整数。您需要的正则表达式是:

(?<!XXX-YYY-)(?<![0-9])[0-9]{5,7}(?![0-9])

(?如果您试图不匹配在所选数字之前发生的某个内容,则这是负回溯。您可以假定
(?)将执行您想要的操作

但这并不是因为,如果所选数字在
XXX-YYY-0
之后开始,则满足负查找(除非
XXX-YYY-
后面紧跟五位数字,否则这总是正确的)

如果您使用此
(?然后,如果所选数字在
XXX-YYY-
之后开始,则满足负查找(这始终是真的)

而且你不能把一些东西放在与任意长度的数字相匹配的lookback中,所以你不能用一个lookback同时保护它们

工作原理是
(?因为这会检查所选数字之前是否没有
XXX-YYY-
,以及所选数字之前是否有数字。这两种情况都会考虑在内-所选数字必须位于数字字符串的开头,并且不能立即跟随
XXX-YYY-
,这正是您所要求的

但是,另一件事是,如果您有一个长度超过七位且没有
XXX-YYY-
的数字,则正则表达式将只匹配该数字的前七位,这不是您想要的

因此,您应该使用
(?来获取不在
XXX-YYY-
后面的整数。您需要的正则表达式是:

(?<!XXX-YYY-)(?<![0-9])[0-9]{5,7}(?![0-9])

(?(?以前尝试过,它仍然捕获XXX-YYY数字。您使用的是什么语言?在记事本++中尝试,我不理解您的问题,主要是因为您以示例的形式进行了转换,这很少会导致问题变得明确。据我所知,您希望在提供一个或多个条件的字符串中匹配5-7位数字满足条件。您需要使用一个或多个示例以文字说明这些条件。可能的要求是匹配的字符串前面不带(比方说)4-6位数字,并且4-6位数字前面不带字符串
“XXX-YYY-”
。让我们看一个例子来说明即使是这样也可以有不同的解释。。。(?以前尝试过,它仍然捕获XXX-YYY数字。您使用的是什么语言?在记事本++中尝试,我不理解您的问题,主要是因为您以示例的形式进行了转换,这很少会导致问题变得明确。据我所知,您希望在提供一个或多个条件的字符串中匹配5-7位数字满足条件。您需要使用一个或多个示例以文字说明这些条件。可能的要求是匹配的字符串前面不带(比方说)4-6位数字,并且4-6位数字前面不带字符串
“XXX-YYY-”
。让我们看一个例子来说明即使是这样也可以有不同的解释…Jerry-谢谢你!!!!!对于详细的解释。我不会很快得出这个结论。我需要在接下来的几天里研究它!再次感谢你。我的理解是OP希望匹配
“XXX-YYY-1234567801234567890”
,但不清楚最后5、6或7位数字是否匹配。无论如何,您建议的正则表达式都不匹配。请解释。@CarySwoveland当他说“但是,我不希望匹配的前缀是XXX-YYY-2763464823”时,我假设他提到的前缀是“XXX-YYY-”并且是“XXX-YYY-2763464823”这只是一个例子(这就是为什么他试图将“XXX-YYY-”放在消极前瞻中,而不是将“XXX-YYY-2763464823”放在消极前瞻中),我不认为他将前瞻和落后混为一谈的事实对于确定