我有一个带有三个“零个或一个”组的正则表达式,简单地说:(\d\s)?(\w\s)?(\D\s)?
,并且我希望如果字符串不包含任何这些组,则正则表达式不匹配。
详细:
"0 a x"
-好的字符串,匹配; "a x "
,"0 x "
,"0 a "
-好的字符串,匹配; "0"
,"a"
,"x"
-好的字符串,匹配; ""
(空字符串)—丑陋,不匹配。有没有办法通过正则表达式来做到这一点?还是仅在我的编程语言支持下?
谢谢。
答案 0 :(得分:1)
尝试此正则表达式:
^(?!\s*$)(\d*\s*)(\w*\s*)([^\d\r\n]*\s*)$
OR
^(?! *$)(\d* *)(\w* *)([^\d\r\n]* *)$
说明:
^
-断言行的开头(?!\s*$)
-前瞻性否定,以确保字符串不为空(\d*\s*)
-匹配0+个数字和0+个空格并将其捕获到第1组(\w*\s*)
-匹配0+个单词字符,后跟0+空格并将其捕获到第2组([^\d\r\n]*\s*)
-匹配0+个非数字后跟0+个空格并将其捕获到第3组$
-声明该行的结尾。