regex 正则表达式从具有条件的字符串中获取特定数字

sz81bmfz  于 2023-10-22  发布在  其他
关注(0)|答案(2)|浏览(124)

我想从下面的字符串中提取“2”(00000002)。但条件是字符串应该以 *X1开头。我希望有一个通用的正则表达式,如果有任何数字,它应该返回它。

*X19845674367       00000002+000000000000123000KGS000CDH000002

我试过这个正则表达式-

(?<=\d)([1-9])\d*(?=\+)

但它返回所有字符串的编号,但我希望有从一个特定的标签例如. *X1
任何建议都将是有益的。谢谢.

7tofc5zh

7tofc5zh1#

如果你不想使用捕获组,那么另一个有效的表达式是:

(?<=\*[^\s]+\s+0*)([1-9]+[0-9]*)(?=\+)

如果 *X1是一个固定的需求,只需将其放在 * 之后:

(?<=\*X1[^\s]+\s+0*)([1-9]+[0-9]*)(?=\+)

除了创建一个捕获组([1-9]+[0-9]*)之外,您还可以省略括号-[1-9]+[0-9]*,两者都可以。
这个表达式允许前面有任何内容,然后是一些空格,然后捕获第一个数字,但忽略0前缀。
您可以在这里使用它并使用演示查看深入的解释:
https://regex101.com/r/gyMx2i/1

bqf10yzr

bqf10yzr2#

^\*X1.*?(\d)\+

正则表达式搜索以*X1开头的字符串,任意个字符,直到找到后跟+符号的数字序列。这些数字保存在一个组中,可以使用match对象的group方法访问该组。
如果no matchis found,则得到None

相关问题