正则表达式,使用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。