与正则表达式作斗争,从字符串中删除数字


Struggling with regular expression, removing number from string

我有许多字符串,如下所示:

Virtus.pro (13)

mousesports (16)

Natus Vincere (12)

如您所见,在所有情况下,这些并不是将名称与数字分开的真正常见方法。我对正则表达式真的很陌生。有没有人知道我如何将这些字符串拆分为包含 2 个变量?

Virtus.pro13 . 然后mousesports16

如您所见,Natus Vincere名称的两个部分之间有一个空格。

真的很挣扎,我只能想出一个正则表达式来提取数字。但这并非每次都有效。

r'([a-zA-Z. ]+) ('('d{1,2}'))'

我在python中尝试了这个,它对我有用。我认为您最好提供更多细节,例如,名称的格式,它包含哪种标点符号,数字,它有多少位数字等。

在我上面的答案中,名称字符串可以包含"."和",数字将是 1 或 2 位数字。您可以将其更改为

r'([a-zA-Z. ]+) '(('d+)')'

以匹配您不知道它包含多少位数字的数字。它顺便对比赛结果进行分组,第二组(索引 1(是名称,第三组(索引 2(是数字。

>>> import re
>>> are=re.compile(r'([a-zA-Z. ]+) '(('d{1,2})')')
>>> d=are.search('Virtus.pro (13)')
>>> d.group()
'Virtus.pro (13)'
>>> d.group(1)
'Virtus.pro'
>>> d.group(2)
'13'

希望对您有所帮助。

嗨,

你可以使用这样的东西

    #!/usr/bin/env python
    import re
    regex = re.compile('^(.*)'(('d+)')$')
    my_match = regex.match('Virtus.pro (13)')

然后,您可以执行以下操作:

    m.group(1) #to get 'Virtus.pro '
    m.group(2) #to get '13'

这是在python中实现

的,顺便说一句