我想匹配这个:
01+WhATEver 02+0.1 03+12.1\r\n
或者
01+WhATEver 02+0.1\r\n
在我按任何顺序解析的字符串中出现如下
01+WhATEver 02+0.1 03+12.1\r\n01+WhATEver 02+0.1 03+12.1\r\n01+WhATEver 02+0.1 03+12.1\r\n
01-02是强制性的,03是可选参数。索引看起来像“01+”,后面跟一个减号。
01+WhATEver 02+-0.1\r\n
我能够解析强制索引和变量但不包括可选的索引和变量...因为如果缺少它将不匹配。
01\\+\\s*(?<1>[.0-9A-Za-z]*)\\s*02\\+\\s*(?<2>[.0-9]*)\\s*03\\+\\s*(?<3>[.0-9]*)\\s*
我需要的是一个正则表达式,它将与包含许多此类子串的字符串中的01-02索引或01-03匹配。
答案 0 :(得分:1)
难道你不能让那个组可选吗?像这样:
"01\\+\\s*(?<1>[.0-9A-Za-z]*)\\s*02\\+\\s*(?<2>[.0-9]*)(\\s*03\\+\\s*(?<3>[.0-9]*)\\s*)?"
^ ^^
(我强调了我添加到正则表达式中的字符。)