Regex 如何形成将解析以下内容的正则表达式?
我需要分析以下行:Regex 如何形成将解析以下内容的正则表达式?,regex,Regex,我需要分析以下行: Action(X,X,Cash(50))Action(Y,Y,Material(30,Car,2))Action(I,I,Cash(50)) 输出应该如下所示: Action(X,X,Cash(50)) Action(Y,Y,Material(30,Car,2)) Action(I,I,Cash(50)) 我使用的正则表达式是: String tokenRegex = "(Action+\\(([a-zA-Z]+|\\,|([a-zA-Z]+\\(\\d*|[a-zA-Z
Action(X,X,Cash(50))Action(Y,Y,Material(30,Car,2))Action(I,I,Cash(50))
输出应该如下所示:
Action(X,X,Cash(50))
Action(Y,Y,Material(30,Car,2))
Action(I,I,Cash(50))
我使用的正则表达式是:
String tokenRegex = "(Action+\\(([a-zA-Z]+|\\,|([a-zA-Z]+\\(\\d*|[a-zA-Z]+|\\,)\\))+\\))";
它无法解析“Action(Y,Y,Material(30,Car,2)),但可以解析“Action(X,X,Cash(50))”。
我做错了什么。什么是正确的正则表达式?不要使用正则表达式,只需做一些事情就可以了
string.replace(")A", ")\nA");
我认为这样做:
String tokenRegex = "(Action\\([a-zA-Z]+,[a-zA-Z]+,[a-zA-Z]+\\(\\d+(,([a-zA-Z]+|\\d+))*\\)\\))";
我删除了正则表达式中分组不需要的一些括号。如果您需要它们来捕获表达式的某些部分,则必须将它们添加回去。也就是说,如果OP使用的是Java,则会在
操作(X,X,Cash(50))末尾的参数之间添加一条换行符。
@anakata;它实际上更像是一种伪代码类型的东西。如果他能胜任他所用的语言,那么根据需要翻译它应该是微不足道的。为什么在操作之后有+
?这将允许操作nnnnnnn
。我不确定您的输入有多复杂。如果Action
functor可以嵌套在另一个Action
functor中,那么使用正则表达式将变得混乱。添加了缺少的反斜杠,请立即尝试。