正则表达式JAVA一次或多次

Pod*_*dge 0 java regex string pattern-matching

嗨,我想尝试匹配模式的字符串

这是可能的字符串

signal CS, NS, dl: stateType := writeOrRead0; 
signal CS, pS : stateType := writeOrRead0; 
signal dS : stateType := writeOrRead0; 
Run Code Online (Sandbox Code Playgroud)

我只关心第一个结肠的模式.

但是定义的信号数量可以多于一个它可能是三个或四个,即使这是我的正则表达式

^signal\\s*(\\w+),*\\s*(\\w+)\\s*:
Run Code Online (Sandbox Code Playgroud)

它将拾取第二个两个信号,但是对于第二个信号,它会选择CS和pS,但是当我使用它时,下一个信号中的d和S

matcher.group()
Run Code Online (Sandbox Code Playgroud)

分开来

任何人都可以给我一个表达式,它将获取所有信号名称是否有一个两个或三个以上?

Joe*_*ckx 5

如果你想为每个信号名称设置一个组,那是不可能的(除非你有一个信号数量的上限,那么你可以写出整个信息,但它会非常难看).

因此,您必须使用包含名称的一个组,逗号分隔.然后你可以对其进行后期处理以获得真实的信号名称.

这会有类似的东西

^signal\s+((?:\w+(?:,\s*)?)*)\s*:
Run Code Online (Sandbox Code Playgroud)

(请注意,我没有将它作为Java String转义.)

第1组是你的名字.