Regex 如何匹配多个可选组中的至少一个?
我有一个带有三个“零或一”组的正则表达式,简单地说:Regex 如何匹配多个可选组中的至少一个?,regex,Regex,我有一个带有三个“零或一”组的正则表达式,简单地说:(\d\s)?(\w\s)?(\d\s)?,如果字符串不包含这些组中的任何一个,我希望正则表达式不匹配 详细说明: “0a x”-良好的字符串,匹配 “a x”,“0 x”,“0 a”-良好的字符串,匹配 “0”,“a”,“x”-良好的字符串,匹配 ”(空字符串)-难看,不匹配 有没有办法通过regex做到这一点?还是只有在我的编程语言支持下 谢谢。试试这个正则表达式: ^(?!\s*$)(\d*\s*)(\w*\s*)([^\d\r\n]*\
(\d\s)?(\w\s)?(\d\s)?
,如果字符串不包含这些组中的任何一个,我希望正则表达式不匹配
详细说明:
“0a x”
-良好的字符串,匹配李>
“a x”
,“0 x”
,“0 a”
-良好的字符串,匹配李>
“0”
,“a”
,“x”
-良好的字符串,匹配李>
”
(空字符串)-难看,不匹配^(?!\s*$)(\d*\s*)(\w*\s*)([^\d\r\n]*\s*)$
或
说明:
-断言行的开头^
-负向前看以确保字符串不是空的(?!\s*$)
-匹配0+个数字,后跟0+个空格,并将其捕获到组1中(\d*\s*)
-匹配0+个单词字符,后跟0+个空格,并将其捕获到组2中(\w*\s*)
-匹配0+非数字后跟0+空格,并将其捕获到组3中([^\d\r\n]*\s*)
-断言行的结尾$
谢谢你给我一个极好的建议,我没有考虑使用前瞻。