Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 如何形成将解析以下内容的正则表达式?_Regex - Fatal编程技术网

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中,那么使用正则表达式将变得混乱。添加了缺少的反斜杠,请立即尝试。