Python 使用正则表达式匹配简单字符串?
如果我有这样一个字符串:Python 使用正则表达式匹配简单字符串?,python,regex,Python,Regex,如果我有这样一个字符串: *select 65* description 如何在Python中使用regex提取星号后面的位和数字?我需要从上面的字符串中生成选择和65 它们都遵循这一公约: *[lowercase specifier] [integer]* description 您可以使用以下正则表达式: ^\*([a-z]+)\s+([0-9]+)\* 在Python中,可以将正则表达式与匹配。因此: 您可以使用以下正则表达式: ^\*([a-z]+)\s+([0-9]+)\* 在
*select 65* description
如何在Python中使用regex提取星号后面的位和数字?我需要从上面的字符串中生成选择和65
它们都遵循这一公约:
*[lowercase specifier] [integer]* description
您可以使用以下正则表达式:
^\*([a-z]+)\s+([0-9]+)\*
在Python中,可以将正则表达式与匹配。因此:
您可以使用以下正则表达式:
^\*([a-z]+)\s+([0-9]+)\*
在Python中,可以将正则表达式与匹配。因此:
然后要么
m = re.match(r"^\*([a-z]+)\s+([0-9]+)\*\s+(.*)", "*select 65* description")
print m.groups()
或
取决于要进行的匹配的数量。前者更适合于一个或几个匹配,后者更适合于许多匹配,因为正则表达式的编译形式更适合于多次执行
然后要么
m = re.match(r"^\*([a-z]+)\s+([0-9]+)\*\s+(.*)", "*select 65* description")
print m.groups()
或
取决于要进行的匹配的数量。前者更适合于一个或几个匹配,后者更适合于许多匹配,因为正则表达式的编译形式更适合于多次执行。Python的正则表达式库功能强大,但我个人喜欢使用split()解决更轻的问题:
>>> s = "*select 65* description"
>>> s.split('*')
['', 'select 65', ' description']
>>> s.split('*')[1].split()
['select', '65']
Python的正则表达式库功能强大,但我个人喜欢使用split()解决较轻的问题:
>>> s = "*select 65* description"
>>> s.split('*')
['', 'select 65', ' description']
>>> s.split('*')[1].split()
['select', '65']
哎哟,对不起,太多了。正如icktoofay所写,要使用的正则表达式是r“^\*([a-z]+)\s+([0-9]+)\*”
,因为您对描述不感兴趣。哎哟,对不起,太多了。正如icktoofay所写,要使用的正则表达式将是r“^\*([a-z]+)\s+([0-9]+)\*”
,因为您对描述不感兴趣。请注意,指定的正则表达式将匹配“小写说明符”和“整数”部分之间的一个或多个空格字符(空格、制表符)。如果匹配应该是严格的,请替换\s+
部分并放入一个实空格字符。请注意,指定的正则表达式将在“小写说明符”和“整数”部分之间匹配一个或多个空格字符(空格、制表符)。如果匹配应该是严格的,则替换\s+
部分并放入一个实空格字符。可能,但这并不能验证“小写说明符”实际上是小写,或者“整数”部分实际上是整数,因此您必须执行额外的错误检查。+1表示不使用正则表达式。如果您有其他简单的解决方案,请不要使用正则表达式。可能吧,但这并不能验证“小写说明符”实际上是小写,或者“整数”部分实际上是整数,因此您必须执行额外的错误检查。+1表示不使用正则表达式。如果有其他简单的解决方案,不要使用正则表达式。