这是我的字符串示例: "此类别中的#31,456(类别前100名)"
我的任务是:
我想出了正则表达式。
(^\#)(\d+[,]?\d+)(.*)([\(+])
预期结果:
第2组 - 31,456
第3组 - 此类别
基本上我需要取第一个数字和后面的句子,分别分组。 只有当字符串包含括号时,此正则表达式才能完成工作。但有些情况下它并不包含,在这种情况下它根本不会采取任何措施。
请传播一些光。如果重要的话,我正在使用python 3完成任务。
答案 0 :(得分:2)
您可以使用
^#(\d+(?:,\d+)?)\s*([^(]*)
请参阅regex demo。
<强>详情
^
- 字符串开头#
- 哈希符号(\d+(?:,\d+)?)
- 第1组:一个或多个数字以及,
后跟1+位数的可选序列\s*
- 1+空白字符([^(]*)
- 第2组:除(
import re
rx = r"^#(\d+(?:,\d+)?)\s*([^(]*)"
s = "#31,456 in this category (Top 100 of category)"
m = re.search(rx, s)
if m:
print("Group 1: {}; Group 2: {}".format(m.group(1), m.group(2)))
# => Group 1: 31,456; Group 2: in this category