我目前有一个怪物正则表达式,目前正在研究它是如何发挥最佳作用的。
下面列出了我的正则表达式,我很好奇是否有一种方法可以在一个函数中优先考虑正则表达式,而不是仅仅寻找可能存在的特定匹配。
例子:
如果在我的字符串中我有一个匹配项,([\d]+/[\d]+)
或者([\d]+ / [\d]+)
它会首先选择它。
如果上面的匹配项不存在,那么这些匹配项存在([\d]+-[\d]+)
,否则([\d]+ - [\d]+)
它将选择该匹配项
在那之后,如果([\d]+)
那么它将选择该匹配作为结束标记。如果这些都不存在,那么它将继续进行任何其他比赛。
所以我的问题是:
使用正则表达式有什么方法可以优先考虑哪个匹配?
示例:我的一些地址字符串的格式为1 - 12 example street
,通常正则表达式会拉12 example street
而不是采用1 - 12 example street
.
谢谢!
下面列出了完整的正则表达式:
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)