使用正则表达式匹配一个简单的字符串?

时间:2011-08-23 00:37:34

标签: python regex

如果我有这样的字符串:

*select 65* description

如何在Python中使用正则表达式在星号和数字后面提取位?我需要从上面的字符串中产生select65的东西。

所有这些都遵循这个惯例:

*[lowercase specifier] [integer]* description

3 个答案:

答案 0 :(得分:4)

您可以使用此正则表达式:

^\*([a-z]+)\s+([0-9]+)\*

在Python中,您可以将正则表达式与the re module匹配。因此:

import re

my_string = """*select 65* description"""
match = re.match(r"^\*([a-z]+)\s+([0-9]+)\*", my_string)
specifier = match.group(1)
integer = int(match.group(2))

答案 1 :(得分:1)

import re

然后

m = re.match(r"^\*([a-z]+)\s+([0-9]+)\*\s+(.*)", "*select 65* description")
print m.groups()

r = re.compile(r"^\*([a-z]+)\s+([0-9]+)\*\s+(.*)")
m = r.match("*select 65* description")
print m.groups()

取决于您要进行的匹配数量。前者更适合一个或几个匹配,后者更适合许多人,因为正则表达式是以更适合多次执行的形式编译的。

答案 2 :(得分:1)

Python的正则表达式库很强大,但我个人喜欢使用split()来解决轻量级问题:

>>> s = "*select 65* description"
>>> s.split('*')
['', 'select 65', ' description']
>>> s.split('*')[1].split()
['select', '65']