我的旧数据库中有以这种格式的地址:
147 Boulevard Vauban80101 ABBEVILLE
80 rue Henri Dunant94480 ABLON SUR SEINE
3465 route Eguilles13090 AIX EN PROVENCE
其中大写字母的最后一个单词是城市的名称。 我需要从字符串中提取城市名称。我认为最好的方法是在五个连续整数出现后提取子串,但我无法做到。有人可以帮忙吗?
答案 0 :(得分:2)
尝试:
preg_match("/.+[0-9]{5} ([A-Z ]+)/", $input_line, $output_array);
$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 ]+
贪婪地匹配一个或多个空格或大写字母。
- $
此锚标识字符串的结尾。
它查找空格,然后重新启动全字符串匹配,并匹配所有大写字母和空格,直到字符串结尾。
这是最快的,因为没有捕获组。捕获组会导致阻力。