3

我目前有一个怪物正则表达式,目前正在研究它是如何发挥最佳作用的。

下面列出了我的正则表达式,我很好奇是否有一种方法可以在一个函数中优先考虑正则表达式,而不是仅仅寻找可能存在的特定匹配。

例子:

如果在我的字符串中我有一个匹配项,([\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)
4

1 回答 1

0

先改变3的顺序:

(\d+-\d+) | (\d+ - \d+) | (\d+ )

代替:

([\d]+) | ([\d]+-[\d]+) | ([\d]+ - [\d]+)
于 2013-10-28T08:48:03.333 回答