php正则表达式匹配模式
我使用下面的正则表达式来匹配下面的字符串,到目前为止还不错。现在,我如何使BAZ的内容成为可选的,以便它匹配BAZ()的情况php正则表达式匹配模式,php,regex,Php,Regex,我使用下面的正则表达式来匹配下面的字符串,到目前为止还不错。现在,我如何使BAZ的内容成为可选的,以便它匹配BAZ()的情况 要使某些内容成为可选内容,您可以将其放入非捕获组(?:…),然后在组后放置问号。问号是一个量词,意思是“零或一” 换言之,改变这一点: \\\\(\w+) 为此: (?:\\\\(\w+))? 所以整个表达式变成: /FOO (\d+).+BAR (\d+).+BAZ \((?:\\\\(\w+))?\)/i 听起来您只是想将整个内容包装在一个非捕获组中,并添加一个
要使某些内容成为可选内容,您可以将其放入非捕获组
(?:…)
,然后在组后放置问号。问号是一个量词,意思是“零或一”
换言之,改变这一点:
\\\\(\w+)
为此:
(?:\\\\(\w+))?
所以整个表达式变成:
/FOO (\d+).+BAR (\d+).+BAZ \((?:\\\\(\w+))?\)/i
听起来您只是想将整个内容包装在一个非捕获组中,并添加一个
?
操作符
/FOO (\d+).+BAR (\d+).+BAZ (?:\(\\\\(\w+)\))?/i
注意,这捕获了BAZ,后面没有括号。如果您正在寻找BAZ(),请使用以下命令:
/FOO (\d+).+BAR (\d+).+BAZ \((?:\\\\(\w+))?\)/i
使用运算符“?”可能吗?我不太明白你到底想要什么你之前的问题是怎么回事?
/FOO (\d+).+BAR (\d+).+BAZ \((?:\\\\(\w+))?\)/i