gpt4 book ai didi

java - 正则表达式通过第一个斜杠和逗号与条件分割字符串

转载 作者:行者123 更新时间:2023-11-30 05:05:25 24 4
gpt4 key购买 nike

我需要两个不同的正则表达式来分割字符串,用于以下场景。使用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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com