我正在寻找一个正则表达式来解析一个字符串,它可以是以下两种形式之一:-
第 1 部分(第 2 部分 - 第 3 部分)
或者
第 1 部分(第 2 部分)
以下正则表达式匹配第一个字符串并捕获所有三个部分
(.*)\((.*)(?:-)(.*)\)
但我无法即兴发挥它,以便它可以匹配两个字符串。我想要一个正则表达式来匹配两个字符串。不确定它是否可能。
我正在寻找一个正则表达式来解析一个字符串,它可以是以下两种形式之一:-
第 1 部分(第 2 部分 - 第 3 部分)
或者
第 1 部分(第 2 部分)
以下正则表达式匹配第一个字符串并捕获所有三个部分
(.*)\((.*)(?:-)(.*)\)
但我无法即兴发挥它,以便它可以匹配两个字符串。我想要一个正则表达式来匹配两个字符串。不确定它是否可能。
您可以使用
'~(.*)\((.*?)(?:-(.*))?\)~'
查看正则表达式演示
细节
(.*)- 第 1 组:除换行符以外的任何 0+ 个字符,尽可能多\(- 一个(字符(.*?)- 第 2 组:除换行符以外的任何 0+ 个字符,尽可能少(?:-(.*))?- 一个与 a 匹配的可选组-,然后将除换行符之外的任何 0+ 字符捕获到第 3 组中,尽可能多\)- 一个)字符。如果除了字符串中显示的括号外没有其他括号,您可以将模式优化为^([^()]*)\(([^()-]*)(?:-([^()]*))?\)$.