Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用正则表达式匹配简单字符串?_Python_Regex - Fatal编程技术网

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表示不使用正则表达式。如果有其他简单的解决方案,不要使用正则表达式。