如何将一个组进一步拆分到下面? (正则表达式)

问题描述 投票:0回答:1

我正在使用Regx中生成的表达式创建表。

到目前为止,我的表达是:

TABLE \ s + GENERATOR \ s +([az] \ w *)\ s *((\ s *(?:[az] \ w *)+ \ s +(?: string | integer | boolean)\ s * (?:primary)?(?:\ s *,\ s *(?:[az] \ w *)\ s +(?: string | integer | boolean)\ s *(?: primary)?)*)))

我正在测试此表达式以拆分此语句:

TABLE GENERATOR tableName(columnName字符串,column2布尔主字段)

该表达式将我的测试语句分为两组:

  • Group1:tableName

  • Group2:columnName字符串column2布尔主变量

我想知道是否有办法进一步拆分group2或将组拆分为字符串数组或列表?

[我已经尝试将.split(), .toArray()和其他类似方法实施到group2上,以尝试对其进行拆分以及在Regex上搞乱,但是我已经来了一段时间,似乎找不到可行的解决方案。

regex algorithm expression regex-group
1个回答
0
投票

您可以在带括号的组之后放置一个量词,以查找整个组的重复出现:

(a b)+

将匹配3次:

x (a b, a b, a b)
   ^^^  ^^^  ^^^

假设您对列名,类型,修饰符和逗号的声明是一致的,则应利用此声明来提取列信息。我也不会尝试构建一个大型的正则表达式来做到这一点;坚持一个简单的方法,就像我在这里所做的那样,它会反复匹配,然后运行另一个不同的正则表达式来拉出表名(或使用OR |如果您迫切希望在一个rex中完成它,请使用OR |]

© www.soinside.com 2019 - 2024. All rights reserved.