2012-09-19 52 views
1

在php中使用迁移类。
如果我有这样的字符串:正则表达式:如何在第一个单词之后动态获取单词,而不是以'_'分隔的字符串中的最后一个单词?

create_users_roles_table 

,我想获得第一和正确的最后一个字,再加上能够得到词正确的话,如果有只有一个字插图中,如:

create_users_table 

我该怎么做?

我做:

(\B)_([a-zA-Z]+)_?([a-zA-Z]+)_table 

当我做create_users_roles_table
工作正常,并产生用户角色
但是,当只做create_users_table它产生用户s
显然我需要它只生产用户

有人吗?

回答

0

我觉得应该读

(\B)_([a-zA-Z]+)_?([a-zA-Z]+)?_table 

但是,如果在两者之间有三个词这是不行的。我建议剥离单词,然后分开分开,因为我不认为正则表达式可以处理可变数量的捕获组。

如果您可以确定可以有多少单词,那么您总是可以对此进行硬编码。对于树木或更少的字你可以使用

(\B)_([a-zA-Z]+)(?:_([a-zA-Z]+))?(?:_([a-zA-Z]+))?_table 
+0

非常感谢! –

相关问题