我有下一个正则表达式:a(.)ad.*cc(\d)
和输入字符串的2个示例:" a7ad == cc0" 和" a7a == cc0"
我在第一种情况下获得' 7' ,' 0' ,无第二次,无
但我想在第一种情况下使用' 7' ,' 0' , none ,第二名是' 0' (如果只有d后缀,则必须找到第一组)
答案 0 :(得分:1)
怎么样:
(?:a(.)ad)?.*cc(\d)
(?:a(.)ad)?
尝试匹配a7ad
,如果匹配,则捕获组1中的数字,否则组1为空。
答案 1 :(得分:1)
您可以使用此模式:
a(?:(.)ad|.a).*cc(\d)
如果第一个备用(.)ad
失败,则正则表达式引擎使用第二个备用.a
,第一个捕获组返回None
答案 2 :(得分:0)
您可以使用?选择组。
如果左侧参数中的ad
是可选的,请执行以下操作:
a(.)(?:ad)?.*cc(\d)
(可选的非捕获组)
如果只有d
是可选的,您可以这样做:
a(.)ad?.*cc(\d)
(只需d
可选)
我还使用==
的事实(如果它总是介于对你很重要的部分之间)。确切地说,取决于那里可以出现的输入类型。