我试图弄清楚如何编写以下正则表达式:
假设我可以使用两种类型的字符串来检查和查找“值”:
字符串1:CONST1:CONST2:CONST3:value
和
字串2:CONST1:CONST2:CONST4:value-12345
对于string1,此模式可以
CONST1:CONST2:(CONST3|CONST4):(.*)
在这里我捕获了第二组。但是,当“值”后跟破折号和其他一些值时,我还需要处理这种情况。
我这样尝试过:
CONST1:CONST2:(CONST3|CONST4):(.*)(-.*)?
但是第二组
(.*)
将捕获string2中的所有内容,包括以下破折号+ value2(12345)。将其设置为(.*?)
也不起作用,因为string1 group2将返回空的String。谁能指出我应该朝哪个方向寻找解决方案?我应该深入研究,还是有一个更简单的解决方案?
提前致谢。
最佳答案
不要使用
(。*),但
([^ \-] *)
避免-结果。
通常最好避开圆点。但给出允许的字符的肯定或否定列表。
关于java - Java正则表达式中的条件捕获,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38220836/