我需要两个不同的正则表达式来分割字符串,用于以下场景。 使用Java平台。
<强>1。需要仅用第一个“/”分割,如果斜线位于“{}”大括号内,则不会考虑它 而且,只有当它像示例 c) 那样时,我才需要截断开始和结束大括号“{}”。
一)
input: "Response/CartResponse/{StatusData/ResponseCode,RespMessage,{ArrivalMethods/AvailableArrivalMethod/AvailableArrivalMethodName,AvailableFFMCenter}},{ServiceHeaders/clientSessionKey},{Shoppingcart/OrderId,CatalogId}";
output:
"Response"
"CartResponse/{StatusData/ResponseCode,RespMessage,{ArrivalMethods/AvailableArrivalMethod/AvailableArrivalMethodName,AvailableFFMCenter}},{ServiceHeaders/clientSessionKey},{Shoppingcart/OrderId,CatalogId}";
-------------
b)
input: "CartResponse/{StatusData/ResponseCode,RespMessage,{ArrivalMethods/AvailableArrivalMethod/AvailableArrivalMethodName,AvailableFFMCenter}},{ServiceHeaders/clientSessionKey},{Shoppingcart/OrderId,CatalogId}";
output:
"CartResponse"
"{StatusData/ResponseCode,RespMessage,{ArrivalMethods/AvailableArrivalMethod/AvailableArrivalMethodName,AvailableFFMCenter}},{ServiceHeaders/clientSessionKey},{Shoppingcart/OrderId,CatalogId}";
-------------
c)
input: "ArrivalMethods/{AvailableArrivalMethod/AvailableArrivalMethodName,AvailableFFMCenter}";
output:
"ArrivalMethods"
"AvailableArrivalMethod/AvailableArrivalMethodName,AvailableFFMCenter"
<强>2。用逗号分隔,如果逗号位于“{}”大括号内,则不会考虑 我还需要删除“{}”,如以下示例所示。
input: "{StatusData/ResponseCode,RespMessage,{ArrivalMethods/AvailableArrivalMethod /AvailableArrivalMethodName,AvailableFFMCenter}},{ServiceHeaders/clientSessionKey},{Shoppingcart/OrderId,CatalogId}";
output:
"StatusData/ResponseCode,RespMessage,{ArrivalMethods/AvailableArrivalMethod/AvailableArrivalMethodName,AvailableFFMCenter}"
"ServiceHeaders/clientSessionKey"
"Shoppingcart/OrderId,CatalogId"
input: "ResponseCode,RespMessage,{ArrivalMethods/AvailableArrivalMethod/AvailableArrivalMethodName,AvailableFFMCenter}";
output:
"ResponseCode"
"RespMessage"
"ArrivalMethods/AvailableArrivalMethod/AvailableArrivalMethodName,AvailableFFMCenter";
截断大括号在这两种情况下是不同的。
最佳答案
情况 a、b 和 c 之间的区别在于 a 和 b 在 {} 内嵌入了 {},而 c 没有。坏消息是,这不能通过单个正则表达式来实现。更重要的是,保证 {} 的平衡将是一场噩梦。
无论如何,您在这里描述的基本上是一种语言,因此最好为其构建一个解析器(手动或使用 ANTLR 或 JavaCC 等工具)。
关于java - 正则表达式通过第一个斜杠和逗号与条件分割字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5264299/