我想匹配连字符之前和之后的两组字符串。但是,在某些情况下,连字符也可能丢失。所以我想要的是:
“Hello World - 这是一个测试”:group(1)= Hello World,group(2)=这是一个测试
“Hello World”:group(1)= Hello World,group(2)缺失
我已尝试过以下正则表达式的一些变体,但它无法正常工作。
(.*?)(\-.*)
答案 0 :(得分:2)
像([^-]+?)\s*(?:-\s*(.+))?
这样可选择匹配的东西
第二组以连字符开头。
( [^-]+? ) # (1)
\s*
(?:
- \s*
( .+ ) # (2)
)?
答案 1 :(得分:1)