同一个正则表达式在一个脚本中起作用,在另一个脚本中不起作用

时间:2015-03-08 11:15:24

标签: python regex python-2.7

我有一个简单的正则表达式('(\b) +-{1,} +(\b)')包含在脚本中(txt2tex.py;行号17和48是重要的)并且可以提供给另一个脚本({{3} };只需要从命令行中将正则表达式作为第一个参数匹配,替换文本作为第二个参数,文件名称为第3个参数。

在txt2tex.py中计算时,正则表达式与给定的输入文本不匹配,但是当我将其复制并粘贴到命令行并按如下方式调用multilineRegex.py时,它按预期工作:

multilineRegex.py '(\b) +-{1,} +(\b)' '---' input.txt

当我正在玩正则表达式时,我注意到了这种差异。关于我做错了什么想法?

使用以下行验证此行为:

Here's something - arbit for you to think of.

详细说明:

  • Python:2.7.5
  • OS:OS X 10.9.5

1 个答案:

答案 0 :(得分:1)

那是因为你的shell将\b解释为控制字符(退格)。您可以通过执行:

来证明这一点
$ echo 'hello\bworld'
hellworld

将正则表达式提供给脚本时,请使用额外的反斜杠转义它:

multilineRegex.py '(\\b) +-{1,} +(\\b)' '---' input.txt