我正在编写一个正则表达式匹配程序,我无法使用以空格开头的正则表达式。
有没有办法告诉OptParse只能用第一个空格分隔?
答案 0 :(得分:3)
不,因为 shell 删除了这些空格,而不是optparse。 Python提供了已经解析的命令行参数列表。
使用引号来保留空格:
./yourscript.py --option=" spaces in here "
为了演示,我创建了以下脚本:
#!/usr/bin/env python
import sys
print sys.argv
向您展示optparse看到的内容:
$ ./demo.py foo bar baz
['./demo.py', 'foo', 'bar', 'baz']
注意如何删除空白并将三个值传递给脚本。但引用:
$ ./demo.py " foo bar" baz
['./demo.py', ' foo bar', 'baz']
保留了空格,我将两个字符串连接成一个字符串。
答案 1 :(得分:1)
你的问题缺乏很多数据来有效地回答它,但也许有以下帮助:
如果您无法使用以空格开头的正则表达式,请尝试使用代表空格的替换字符:\s
..因此\s{3}test
将匹配"< 3 space> test& #34;
如果是shell脚本,请记得双重转义,因为shell会忽略s
中的\s
。因此,正确的版本将是\\s{3}test
答案 2 :(得分:0)
命令行在它们到达Python程序之前拆分参数。您可能希望使用"
或'
来封装正则表达式,具体取决于您的shell。例如,在Bash中,双引号将在$
和`
字符上启用shell扩展,这可能会导致错误。
./match.py --pattern=" something (.*)"