需要帮助构建一个正则表达式来接受两种形式的字符串
Need help building a regex to accept two forms of strings
我正在寻找一个正则表达式来解析一个字符串,它可以是以下两种形式之一:-
Part 1 (Part 2 - Part 3)
或
Part 1 (Part 2)
以下正则表达式匹配第一个字符串并捕获所有三个部分
(.*)\((.*)(?:-)(.*)\)
但我无法即兴创作使其可以匹配两个字符串。我想要一个正则表达式来匹配两个字符串。不确定是否可行。
您可以使用
'~(.*)\((.*?)(?:-(.*))?\)~'
详情
(.*)
- 第 1 组:除换行字符外的任何 0+ 个字符,尽可能多
\(
- 一个 (
字符
(.*?)
- 第 2 组:除换行字符外的任何 0+ 个字符,尽可能少
(?:-(.*))?
- 匹配 -
的可选组,然后将除换行符以外的任何 0+ 个字符捕获到第 3 组中,尽可能多
\)
- 一个 )
字符。
如果除了字符串中显示的括号之外没有其他括号,您可以将模式优化为 ^([^()]*)\(([^()-]*)(?:-([^()]*))?\)$
.
我正在寻找一个正则表达式来解析一个字符串,它可以是以下两种形式之一:-
Part 1 (Part 2 - Part 3)
或
Part 1 (Part 2)
以下正则表达式匹配第一个字符串并捕获所有三个部分
(.*)\((.*)(?:-)(.*)\)
但我无法即兴创作使其可以匹配两个字符串。我想要一个正则表达式来匹配两个字符串。不确定是否可行。
您可以使用
'~(.*)\((.*?)(?:-(.*))?\)~'
详情
(.*)
- 第 1 组:除换行字符外的任何 0+ 个字符,尽可能多\(
- 一个(
字符(.*?)
- 第 2 组:除换行字符外的任何 0+ 个字符,尽可能少(?:-(.*))?
- 匹配-
的可选组,然后将除换行符以外的任何 0+ 个字符捕获到第 3 组中,尽可能多\)
- 一个)
字符。
如果除了字符串中显示的括号之外没有其他括号,您可以将模式优化为 ^([^()]*)\(([^()-]*)(?:-([^()]*))?\)$
.