我有三种格式的文字:
理想情况下,我希望能够提取所有组,例如Dan,3,5,5和56在任何情况下,我目前有:
/(\S*)\s(\d*):(\d*)-(\d*)($|,\s(\d*):(\d*)-(\d*))/gmix
..哪个有效,但不能很好地捕捉第二个案例。是否有更好/更有效的方法来做到这一点?
答案 0 :(得分:1)
试试这个:((?:\d*\s)?(?:\S*))\s(\d*):(\d*)-(\d*)(?:,\s(\d*):(\d*)-(\d*))?
或作为java字符串:"((?:\\d*\\s)?(?:\\S*))\\s(\\d*):(\\d*)-(\\d*)(?:,\\s(\\d*):(\\d*)-(\\d*))?"
好的,只是编辑了所以' 2 Sam'将在同一组
注意:然而,最好的方法是知道输入字符串中每个元素的确切规范(如果可能的话),而不是只使用3种可能性。
答案 1 :(得分:0)
这个怎么样:
([\w ]+) (?:(?:(\d+?):(\d+?)\-(\d+))(?:, )?)*
只有/g
(全局)修饰符?
这是一个带有解释的regex101:https://regex101.com/r/pP5pY3/1