I have a Regex that match multiple option.
E.g. ^0x[\da-fA-F]+|-?\d+$ -- a Regex for Match either decimal or hex literals
Is there an option to know which option was eventually match the pattern?
so for...
-10 - the decimal option was matched0x1Af - the hex option was matched我想你是说这个正则表达式:
^(?:-?\d+|0x[\da-fA-F]+)$
Run Code Online (Sandbox Code Playgroud)
起点和终点锚点不是替代方案的一部分。
您可以捕获不同的选择:
^(?:(-?\d+)|(0x[\da-fA-F]+))$
Run Code Online (Sandbox Code Playgroud)
现在,您只需要检查组是否不为空。如果它与第一个备选方案匹配,则组1将为非null。如果它与第二个选项匹配,则组2将为非null:
Match m = Regex.Match(...);
if (m.Groups[1] != null) {
// first alternative matched!
} else if (m.Groups[2] != null) {
// second alternative matched!
}
Run Code Online (Sandbox Code Playgroud)
您还可以命名组,以使代码更具可读性:
^(?:(?<decimal>-?\d+)|(?<hex>0x[\da-fA-F]+))$
Run Code Online (Sandbox Code Playgroud)
现在,您应该检查m.Groups["decimal"]和m.Groups["hex"]。
| 归档时间: |
|
| 查看次数: |
59 次 |
| 最近记录: |