如果我有这样的字符串:
*select 65* description
如何在Python中使用正则表达式在星号和数字后面提取位?我需要从上面的字符串中产生select
和65
的东西。
所有这些都遵循这个惯例:
*[lowercase specifier] [integer]* description
答案 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']