joe*_*joe 28 regex optional regex-group
我正在使用这个正则表达式:
((?:[a-z][a-z]+))_(\d+)_((?:[a-z][a-z]+)\d+)_(\d{13})
Run Code Online (Sandbox Code Playgroud)
匹配这样的字符串:
SH_6208069141055_BC000388_20110412101855
Run Code Online (Sandbox Code Playgroud)
分为4组:
SH
6208069141055
BC000388
20110412101855
Run Code Online (Sandbox Code Playgroud)
问题:如何使第一组可选,以便生成的组是空字符串?
在可能的情况下,我想在每种情况下获得4组.
这种情况的输入字符串:(第一组后没有下划线)
6208069141055_BC000388_20110412101855
Run Code Online (Sandbox Code Playgroud)
Dan*_* W. 98
制作一个非捕获的零到更多匹配组,您必须附加?.
(?: ..... )?
^ ^____ optional
|____ group
Run Code Online (Sandbox Code Playgroud)
Jer*_*rry 29
您可以轻松简化您的正则表达式:
(?:([a-z]{2,})_)?(\d+)_([a-z]{2,}\d+)_(\d+)$
Run Code Online (Sandbox Code Playgroud)
我不确定没有第一组的输入字符串是否会有下划线,但如果它是整个字符串,你可以使用上面的正则表达式.
如您所见,第二场比赛中匹配的组1为空,并从匹配的组2开始.