我有一个简单的问题,但我无法解决这个问题.我的字符串有一个格式ID: dddd,带有以下正则表达式:
/^ID: ([a-z0-9]*)$/
Run Code Online (Sandbox Code Playgroud)
或者如下:ID: 1234 Status: 232,所以使用以下正则表达式:
/^ID: ([a-z0-9]*) Status: ([a-z0-9]*)$/
Run Code Online (Sandbox Code Playgroud)
现在我想制作一个可以处理两者的正则表达式.我想出的第一件事是:
/^ID: ([a-z0-9]*)$|^ID: ([a-z0-9]*) Status: ([a-z0-9]*)$/
Run Code Online (Sandbox Code Playgroud)
它匹配,但我正在研究条件正则表达式,并且认为某些事情应该是可能的(伪编码)
if the string contains /Status:/
/^ID: ([a-z0-9]*)$/
else
/^ID: ([a-z0-9]*) Status: ([a-z0-9]*)$/
Run Code Online (Sandbox Code Playgroud)
只是,我无法正确表达.我以为我应该使用,/?=/但不知道如何.就像是
/((?=Status)^ID: ([a-z0-9]*) Status: ([a-z0-9]*)$|^ID: ([a-z0-9]*)$/
Run Code Online (Sandbox Code Playgroud)
但这不起作用.
你能帮我吗?
您正在寻找 ^ID: (\d+)(?: Status: (\d+))?$
编辑:因为这个问题被标记为Ruby,所以值得一提的是,根据 这个问题和这种风味比较,Ruby不会做有条件的正则表达式.
http://www.regular-expressions.info是这个主题的一个很好的来源.