正则表达式得到多个数字

时间:2015-10-29 01:40:59

标签: regex

以下作品:

/<(?:CURRENCY):[ ]*([\w\s]+(\s*,\s*)\d+(\s*\d+)*)>/i

有:

<currency: Sample Name, 76>

但现在我想将其更改为:<currency: Sample Name, 76, 76>

我不知道正则表达式能够改变我尝试过的方法:/<(?:CURRENCY):[ ]*([\w\s]+(\s*,\s*,\s*)\d+(\s*\d+\s*\d+)*)>/i

但它不起作用。想法?

2 个答案:

答案 0 :(得分:0)

这可能有用

/<(?:CURRENCY):[ ]*([\w\s]+,\s*\d+(,\s*\d+\s*)*)>/i

我认为这部分(\s*,\s*,\s*)正在寻找太多逗号和这一部分 (\s*\d+\s*\d+)没有说明逗号。

答案 1 :(得分:0)

这些正则表达式很奇怪。

  • (?:CURRENCY):为什么在这里使用非捕获组,如果你没有对该组做任何事情?
  • [ ]*:一个包含单个字符的字符类?为什么不只是一个太空明星?

以下是我将如何做到这一点(假设它最后可以包含许多数字,例如<currency: Sample Name, 23, 24, 25>):

<currency: *[\w ]+(,\s*\d+)+>

如果你最后只需要匹配两个数字:

<currency: *[\w ]+(,\s*\d+){2}>

您可以将{2}更改为任意数量的重复,并使用{2,}作为最小数量但没有上限。

您可能需要根据需要添加捕获组( )。您还可以使用某些在线工具(例如regex101.com)来测试您的正则表达式。