我已经搜索堆栈溢出和网络,我发现了类似的问题,但没有给我一个具体的答案。我有一个字符串,充当一个列表,其格式如下: Key(Value)/ Key(value)/ Key(value,value))。如果密钥存在,我希望通过密钥名匹配它们,所以我不想在任何地方包括括号......只是密钥和值。我编写出来的东西,但它是一个真正的混乱......正则表达式:列表中的捕获组像字符串
所以我的条件是: 1)提取键值对没有括号 2)提取它们是否可用... 3)如果列表中值部分包含由“”提取单独
textToParse = "TdkRoot(0x0)/Tdk(0x2,0x0)/Tdk(0x0,0x1)/VAL(40A8F0B32240,2x4)/SN(0000:0000:0000:0000:0000:0000:0000:0000/IP(000.1.000.1)/Blue(2x4,2x4)"
String patternText = "^TdkRoot\(([A-Za-z0-9]) Tdk\((\\w}+) VAL\((\\w) SN\((\\w) IP\ ((\\w) Blue\((\\w)"
Pattern pattern = Pattern.compile(patternText);
Matcher matcher = pattern.matcher(textToParse);
//Extract the groups from the regex (e.g. elements in braces)
String messageId = matcher.group(1);
String submitDate = matcher.group(4);
String statusText = matcher.group(6);
我认为一个更清洁/更简单的方法是提取使用模式为每个键/值的元素分隔两个值。如果是这样,我可以用什么模式来告诉正则表达式:对于“key”来说,抓住“值”但留下圆括号......如果值由彗星分隔..返回数组??可能?
感谢社区!希望能从你那听到答复!
PS我知道(?<=\()(.*?)(?=\))
会捕获括号中的任何内容“(此值)被捕获),但是我怎样才能修改它以在括号之前指定一个键?”我想捕获这个(圆括号)中的内容“。 ..键此 可能由昏迷
提供样品的输入和输出.. – TheLostMind
输入是textToParse场以上,我使用来测试输出,没有得到匹配... – Joe
有是答案..检查他们是否工作.. – TheLostMind