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”
    -良好的字符串,匹配
  • (空字符串)-难看,不匹配
  • 有没有办法通过regex做到这一点?还是只有在我的编程语言支持下

    谢谢。

    试试这个正则表达式:

    ^(?!\s*$)(\d*\s*)(\w*\s*)([^\d\r\n]*\s*)$
    

    说明:

    • ^
      -断言行的开头
    • (?!\s*$)
      -负向前看以确保字符串不是空的
    • (\d*\s*)
      -匹配0+个数字,后跟0+个空格,并将其捕获到组1中
    • (\w*\s*)
      -匹配0+个单词字符,后跟0+个空格,并将其捕获到组2中
    • ([^\d\r\n]*\s*)
      -匹配0+非数字后跟0+空格,并将其捕获到组3中
    • $
      -断言行的结尾

    • 谢谢你给我一个极好的建议,我没有考虑使用前瞻。