正则表达式并不是我最强的套装,我在这种情况下遇到了一些麻烦。从括号,括号和连字符的字符串中获取子字符串
我有以下字符串:
locale (district - town) [parish]
我需要提取以下信息: 1 - 区域设置 2 - 区 3 - 镇
而且我有这些解决方案:
1 - 区域
preg_match("/([^(]*)\s/", $input_line, $output_array);
2 - 区
preg_match("/.*\(([^-]*)\s/", $input_line, $output_array);
3 - 镇
preg_match("/.*\-\s([^)]*)/", $input_line, $output_array);
而这些似乎很好地工作。 但是,字符串可以呈现像任何这些:
localeA(localeB) (district - town) [parish]
locale (district - townA(townB)) [parish]
locale (district - townA-townB) [parish]
区域设置还可以包括其自身的括号内。 城镇可以包括括号和/或自己的连字符。
这使得很难提取正确的信息。在3个场景上面,我将不得不提取:
localeA(localeB)+小区+镇
区域+小区+ townA(townB)
区域+小区+ townA-townB
我发现很难处理所有这些情况。你能帮我吗?
在此先感谢
[?GOT速度(http://regex101.com/r/xS9fZ1) – HamZa
@Hamza:为什么评论为什么不回答? – anubhava
@anubhava我忙于其他事情,这是一个快速小提琴。如果我发布这个答案,我至少应该提供一些解释。 – HamZa