Regex 正则表达式匹配优先级(前视正则表达式和后视正则表达式)

Regex 正则表达式匹配优先级(前视正则表达式和后视正则表达式),regex,vb.net,Regex,Vb.net,我现在有一个怪物正则表达式,目前正在研究它的最佳功能 下面列出了我的正则表达式,我很好奇是否有一种方法可以在一个函数中对正则表达式进行优先级排序,而不仅仅是查找可能存在的特定匹配项 例如: 如果在我的字符串中有一个匹配的([\d]+/[\d]+)或([\d]+/[\d]+),它会首先选择它 如果上面的匹配项不存在,但这些已存在的([\d]+-[\d]+)或([\d]+-[\d]+)则会选择该匹配项 然后,如果([\d]+),它将选择该匹配项作为结束标记。如果这些都不存在,那么它将继续进行其他比赛

我现在有一个怪物正则表达式,目前正在研究它的最佳功能

下面列出了我的正则表达式,我很好奇是否有一种方法可以在一个函数中对正则表达式进行优先级排序,而不仅仅是查找可能存在的特定匹配项

例如:

如果在我的字符串中有一个匹配的
([\d]+/[\d]+)
([\d]+/[\d]+)
,它会首先选择它

如果上面的匹配项不存在,但这些已存在的
([\d]+-[\d]+)
([\d]+-[\d]+)
则会选择该匹配项

然后,如果
([\d]+)
,它将选择该匹配项作为结束标记。如果这些都不存在,那么它将继续进行其他比赛

所以我的问题是:

有了正则表达式,有没有办法优先选择哪个匹配项?

示例:我的一些地址字符串的格式为
1-12 example street
, 正则表达式通常会拉取
12示例街
,而不是取
1-12示例街

谢谢

下面列出了完整的正则表达式:

New Regex("( ([\d]+) | ([\d]+-[\d]+) | ([\d]+ - [\d]+) | CAR
SMOULDERING | GAS BOTTLE EXPLOSION | INPUT | OFF | OPPOSITE | CNR |
SPARKING | INCIC1 | INCIC3 | STRUC1 | STRUC3 | G&SC1 | G&SC3 | ALARC1 | 
ALARC3 | NOSTC1| NOSTC3 | RESCC1 | RESCC3 | HIARC1 | HIARC3 | CAR
ACCIDENT - POSS PERSON TRAPPED | EXPLOSIONS HEARD | WASHAWAY AS A
RESULT OF ACCIDENT | ENTRANCE | ENT |FIRE| LHS | RHS | POWER LINES
ARCING AND SPARKING | SMOKE ISSUING FROM FAN | CAR FIRE | FIRE ALARM
OPERATING | GAS LEAK | GAS PIPE | NOW OUT | ACCIDENT | SMOKING | ROOF | 
GAS | REQUIRED | FIRE | LOCKED IN CAR | SMOKE RISING | SINGLE CAR
ACCIDENT | ACCIDENT | FIRE)(.*?)(?=\SVSE| M | SVC | SVSW | SVNE | SVNW
)", RegexOptions.RightToLeft)

首先更改3的顺序:

(\d+-\d+) | (\d+ - \d+) | (\d+ )
而不是:

([\d]+) | ([\d]+-[\d]+) | ([\d]+ - [\d]+)

你最后的三篇文章不可读。请您花点时间将其正确格式化(使用SO标记、短句、换行、逗号、句点)。这将增加你得到答案的机会。谢谢你的提示,我希望它更容易阅读。它真的更好。你能写出几个你需要匹配的字符串的例子吗?我不确定你是否必须把所有的字符串都放在一个备选的字符串中,并且你需要使用
rightoleft
选项。我想你所说的例子是指我试图匹配的字符串的例子吗?我在主要问题/讨论中添加了一些例子谢谢,这正是我想要的,所以正则表达式匹配的优先级是从左到右,所以使用上面的方法,应该先取25/1的示例st,然后取12-56的示例st(带空格或不带空格),然后取一个简单的数字。这在多个正则表达式匹配中是如何工作的,我有下面的正则表达式,我认为是CNR,或者先匹配数字,然后最后匹配气体管道泄漏,但在这种情况下,它不匹配。相反,它与CNR或编号(CNR)(([\d]+/[\d]+)([\d]+/[\d]+)|([\d]+-[\d]+)|([\d]+-[\d]+)([\d]+).*(?=SV[NCSEW]| M)之前的燃气管道泄漏相匹配|(?@user1829564:以前它应该匹配
CNR
。你能用一些你想匹配的例子和预期的结果更新你的问题吗?一定是我使用的正则表达式测试仪的一个bug,因为我使用该网站时它工作得很好。--谢谢!