目前我有一个怪物正则表达式,目前正在研究这个最佳功能。
我的正则表达式如下所示,我很好奇是否有办法在一个函数中优先处理正则表达式,而不是只查找可能存在的特定匹配。
示例:
如果在我的字符串中我匹配([\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)
答案 0 :(得分:0)
首先更改3的顺序:
(\d+-\d+) | (\d+ - \d+) | (\d+ )
而不是:
([\d]+) | ([\d]+-[\d]+) | ([\d]+ - [\d]+)