正则表达式,使用Python中包含空格的表达式

正则表达式,使用Python中包含空格的表达式,python,Python,在阅读文档后,我生成了以下表达式: (\['[^']+'(?:,\s*'[^']+'){0,}\]) (\[(?:'[^']+')(?:,\s*'[^']+'){0,}\]) ('[^']+') ([1-9][0-9]*) 这意味着认识到这种模式: [1'、'11'、'111'][cpp'、'h']'utf-8'500 我尝试在Python 3.5.4中使用它: import re import sys x = sys.argv[1:] args = re.match(u"(\['[^']+'

在阅读文档后,我生成了以下表达式:

(\['[^']+'(?:,\s*'[^']+'){0,}\]) (\[(?:'[^']+')(?:,\s*'[^']+'){0,}\]) ('[^']+') ([1-9][0-9]*)
这意味着认识到这种模式:

[1'、'11'、'111'][cpp'、'h']'utf-8'500

我尝试在Python 3.5.4中使用它:

import re
import sys
x = sys.argv[1:]
args = re.match(u"(\['[^']+'(?:,\s*'[^']+'){0,}\]) (\['[^']+'(?:,\s*'[^']+'){0,}\]) ('[^']+') ([1-9][0-9]*)",
                ' '.join(x))
我能认出这个例子:

[1'、'11'、'111'][cpp'、'h']'utf-8'500

但是,当试图认识到这一点时:

['1','11','111']['cpp','h']'utf-8'500

或者这个:

[1'、'11'、'11'][cp p'、'h']'utf-8'500

在python中,每当在
(')
(')
之间或在
(',)
(')
之间表示空格时,它就会失败

但在这一点上,正则表达式很有魅力


知道为什么会这样吗?

我是soory,noob的错误,python的第一个项目

我完全忘记了,在cmd中,每当包含空格时,我都应该使用''''来包含文本

错误方式:

python re-encoder.py['1','11','11']['cpp','h']'utf-8'500

正确的方法:

python re-encoder.py“['1','11','11']”“['cpp','h']”utf-8'500


要在cmd中调用脚本,我是soory,noob的错误,python中的第一个项目

我完全忘记了,在cmd中,每当包含空格时,我都应该使用''''来包含文本

错误方式:

python re-encoder.py['1','11','11']['cpp','h']'utf-8'500

正确的方法:

python re-encoder.py“['1','11','11']”“['cpp','h']”utf-8'500


在cmd中调用脚本将参数作为字符串传递将起作用。 为什么不这样做呢

import re
import sys
x = sys.argv[1:]
args = re.match(u"(\['[^']+'(?:,\s*'[^']+'){0,}\]) (\['[^']+'(?:,\s*'[^']+'){0,}\]) ('[^']+') ([1-9][0-9]*)",
                ' '.join(x))

g = args.groups()
print(g[0])
print(g[1])
print(g[2])
print(g[3])
试试这个

$ python re-encoder.py "['1', '11', '111'] ['cpp', 'h'] 'utf-8' 500"
结果

['1', '11', '111']
['cpp', 'h']
'utf-8'
500

将参数作为字符串传递将起作用。 为什么不这样做呢

import re
import sys
x = sys.argv[1:]
args = re.match(u"(\['[^']+'(?:,\s*'[^']+'){0,}\]) (\['[^']+'(?:,\s*'[^']+'){0,}\]) ('[^']+') ([1-9][0-9]*)",
                ' '.join(x))

g = args.groups()
print(g[0])
print(g[1])
print(g[2])
print(g[3])
试试这个

$ python re-encoder.py "['1', '11', '111'] ['cpp', 'h'] 'utf-8' 500"
结果

['1', '11', '111']
['cpp', 'h']
'utf-8'
500

我正试图通过main使这个项目可用。你真的需要使用原始字符串(
r“…”
),以确保正则表达式中的反斜杠不会被误解为字符串转义字符。谢谢你的提示,这真的帮了我不少忙,当在每个地址中输入“\\”时,我正试图通过main使此项目可用,您确实需要使用原始字符串(
r“…”
),以确保正则表达式中的反斜杠不会被误解为字符串转义字符。感谢您的提示,这真的帮了我不少忙,当在每个地址中输入“\\”时,如果要将这些字符串直接传递到Python中,则不必使用正则表达式来解析它们,使用
ast.literal\u eval
ast.literal\u eval('utf-8')=='utf-8'
。我愿意这样做,regexp更像是对有效参数的求值。感谢您的建议。如果您要将这些字符串直接传递到Python中,您不必使用正则表达式来解析它们,请使用
ast.literal\u eval
ast.literal\u eval(“'utf-8'”)=='utf-8'
。我愿意这样做,regexp更像是对有效参数的求值。谢谢你的建议。谢谢你,我完全没有想到把它们作为一个字符串来传递。因为我想让其中一些是可选的,并使用getopt。谢谢,我完全没有想到将它们作为一个字符串传递。因为我想让其中一些是可选的,并使用getopt。