繁体   English   中英

正则表达式-捕获可选字符串

[英]Regex - Capturing an optional string

我想在一个句子中捕获一组特定的字符串:

Agent/889 (SIP/1011 from SIP/1011) blablabla (Not in use) blablabla (last was 6 secs ago)

Agent/889 (SIP/1011 from SIP/1011) blablabla (Unavailable) blablabla

我在此正则表达式中获得了我想要的所有信息:

Agent\/(\d{3})\s\(SIP\/(\d{4}).*\).*(In use|Not in use|Unavailable)\).*

但是,我想得到一个#4组,该组捕获(如果存在)“最后一次是#秒前”中的内容。 我已经尝试过使用正则表达式:

Agent\/(\d{3})\s\(SIP\/(\d{4}).*\).*(In use|Not in use|Unavailble)\).*(last was \d{1,} secs ago)?

但是,即使字符串包含正则表达式中的文本,#4组也始终在数组中获得空值。 我正在使用PHP的preg_match_all函数,在此站点中进行模拟: PHP Live Regex

您可以使用以下正则表达式

Agent\/(\d{3})\s\(SIP\/(\d{4}).*\).*(In use|Not in use|Unavailable)\)(?:\w*\s*)*(\(last was \d{1,} secs ago\))?

这里这里查看演示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM