匹配模式未在字符串之前或之后

问题描述 投票:0回答:1

我需要匹配9位数或以上的任何序列,该序列不以OR开头,后接2个大写字母,在文本中的任何位置:

OG237338070BR // should NOT match
og237338070br // should match
oG237338070bR // should match
G237338070BR  // should match
OG237338070B  // should match
G237338070B   // should match
asd OG237338070BR asd    // should NOT match
asd G237338070BR asd     // should match
asd OG237338070B asd     // should match
asd OG237338070Basd asd  // should match
asd OG237338070BRasd asd // should NOT match

我尝试了以下失败:

(?![A-Z]{2}(\d{9,})[A-Z]{2})(\d{9,})

这个忽略了负面的前瞻,只是因为它可以在任何地方开始

结合使用负向超前和负向超前,我可以执行AND操作,但无法进行OR操作:

(?<![A-Z]{2})(\d{9,})(?![A-Z]{2})

此字符仅在不带2个大写字母的情况下匹配[[AND不带2个大写字母的条件

因此,问题是:仅使用正则表达式可能吗?

信息:

1-目标引擎是.Net,所以我可以在后面使用可变长度的负数。

2-我不能使用start stringend string锚点(至少,我认为我不能这样做),因为我的匹配项可能在字符串中的任何位置,甚至可能在同一字符串上多次出现(文本)。

3-这不是重复项。我找不到任何带有前后序列/字符串的OR条件。我找到的最接近的人是试图匹配不跟字符的模式的人,他/她可以利用开始字符串和结束字符串锚点。

4-我已经找到并尝试过的内容:

Match only if not preceded or followed by a digit

javascript regex, word not followed and not preceded by specific char

Regular Expression - Match String Not Preceded by Another String (JavaScript)

Match pattern not preceded by character

Regex match exact word not preceded or followed by other characters

https://superuser.com/questions/477463/is-it-possible-to-use-not-in-a-regular-expression-in-textmate

Regex: match everything but specific pattern

Regex: Match everything but one word

regex regex-lookarounds
1个回答
0
投票
None
热门问题
推荐问题
最新问题