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

标签 java regex string split

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

相关文章:

java - JTable 如何处理空值?

regex - 如何匹配除小写字母以外的任何内容?

java - 正则表达式 - 替换文本,忽略圆括号中的文本

c - linux下C如何区分字符串中的数据类型?

java - 处理:发送和接收自定义事件

java - 使用 JENA 创建模型

C# Regex 无法匹配任何内容(可能是因为无法正确转义字符)

php - 在 PHP 中打印没有嵌套循环的模式

php - 使用 PHP 在文件 txt 中搜索名称

java - Spring Boot Starter Integration 和 Starter WS 不能很好地协同工作?