这是标准的posix方式:正则表达式中的double \或single \?

时间:2012-10-04 08:21:37

标签: python r shell posix

获取结束的文件。 ,你可以这样做:
1.R

list.files(path='/home/test', all.files=TRUE, pattern="\\.$")

list.files(path='/home/test', all.files=TRUE, pattern=".+\\.$")

必须加倍\在R中,既不能使用.+\.$也不能使用\.$

2.python

import os
import re
for   root,   dirs,   files   in   os.walk("/home/test"):
    for file in files:
        if re.search(".+\.$",file):
            print file

可以在python中使用.+\\.$\.$\\.$

3.shell

find /home/test  -regex  ".+\.$"

也可以在shell中使用“。+ \。$”

我想知道 1. .+\\.$.+\.$之间的posix方式是什么? 2.为什么我不能在shell中使用find /home/test -regex "\.$"

2 个答案:

答案 0 :(得分:1)

您输入的内容与正则表达式引擎最终看到的内容之间存在差异。

可能有两个问题:

  • 我的工具(R,Python,find)能理解什么样的正则表达式?

    例如,如果您使用Python;您应该问re模块支持哪种语法?

  • 如何输入正则表达式?

    例如,".+\.$"中的find -regex ".+\.$"首先由shell解释。那么问题就是你的shell如何解释".+\.$"?一旦你回答了问题,你可以问find支持哪种正则表达式语法?

POSIX regexes期望\.模式中的单个反斜杠(以匹配文字点),但要在特定环境中输入它,您可能需要两个反斜杠,例如,在Python "\\."r"\."是一样的。

答案 1 :(得分:0)

您是否阅读过?regexp?它写在那里。从我看到的'POSIX 1003.2'开始使用正则表达式。