1

在 php 中处理迁移类。
如果我有这样的字符串:

create_users_roles_table

我想正确地得到第一个词和最后一个词之间的词,如果中间只有一个词,那么能够得到正确的词,例如:

create_users_table

我该怎么做?

我已经搞定了:

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

当我执行create_users_roles_table
并生成usersroles时,效果很好。
但是当只做create_users_table时,它​​会产生users
显然我需要它来只生产users

任何人?

4

1 回答 1

0

我觉得应该读

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

但是,如果中间有三个单词,这将不起作用。我建议剥离单词然后单独拆分它们,因为我认为正则表达式不能处理可变数量的捕获组。

如果您可以确定可以有多少个单词,您可以随时对其进行硬编码。对于树或更少的单词,您可以使用

(\B)_([a-zA-Z]+)(?:_([a-zA-Z]+))?(?:_([a-zA-Z]+))?_table
于 2012-09-19T16:54:09.057 回答