PHP在连续五个整数后提取子字符串

时间:2017-12-20 12:17:11

标签: php regex

我的旧数据库中有以这种格式的地址:

147 Boulevard Vauban80101 ABBEVILLE
80 rue Henri Dunant94480 ABLON SUR SEINE
3465 route Eguilles13090 AIX EN PROVENCE

其中大写字母的最后一个单词是城市的名称。 我需要从字符串中提取城市名称。我认为最好的方法是在五个连续整数出现后提取子串,但我无法做到。有人可以帮忙吗?

4 个答案:

答案 0 :(得分:2)

尝试:

 preg_match("/.+[0-9]{5} ([A-Z ]+)/", $input_line, $output_array);

Example

$output_array[1]将成为这座城市。

你也可以调整它以取出帖子号码:

 preg_match("/.+([0-9]{5}) ([A-Z ]+)/", $input_line, $output_array);

$output_array[1]将是帖子编号。 $output_array[2]将成为城市。

答案 1 :(得分:0)

你可以使用这样的正则表达式:

  myclassDto.setValue(nodeName, value)

<强> Working demo

Php代码

 ([A-Z ]+)$

<强> IdeOne demo

答案 2 :(得分:-1)

template <typename Struct, typename... T>
using is_aggregate_initializable = std::conjunction<std::is_aggregate<Struct>, is_direct_list_initializable<Struct, T...>, std::negation<std::conjunction<std::bool_constant<sizeof...(T) == 1>, std::is_same<std::decay_t<std::tuple_element_t<0, std::tuple<T...>>>, Struct>>>>;

template<typename Struct, typename... T>
constexpr bool is_aggregate_initializable_v = is_aggregate_initializable<Struct, T...>::value;

这应该有效

答案 3 :(得分:-2)

我只发布了这个,因为SO值得提供干净,高效,有教育意义的解决方案。 (低估这个精致的维基答案毫无意义。)这是您最有效的解决方案:

/ \K[A-Z ]+$/

- \K在模式的前导空格后重新开始全字符串匹配。 - [A-Z ]+贪婪地匹配一个或多个空格或大写字母。 - $此锚标识字符串的结尾。

它查找空格,然后重新启动全字符串匹配,并匹配所有大写字母和空格,直到字符串结尾。

这是最快的,因为没有捕获组。捕获组会导致阻力。