-3

获取以 . ,你可以这样做:
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中使用.+\\.$ or 。\.$\\.$

3.外壳

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

也可以在 shell 中使用 ".+\.$"

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

4

2 回答 2

1

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

可能有两个问题:

  • 我的工具(R、Python、find)理解什么风格的正则表达式?

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

  • 如何输入正则表达式?

    例如,".+\.$"infind -regex ".+\.$"首先由 shell 解释。所以问题变成了你的shell如何解释".+\.$"?一旦你回答了它,你可以问什么正则表达式语法find支持?

POSIX 正则表达式期望模式中有一个反斜杠\.(以匹配文字点),但要在特定环境中输入它,您可能需要两个反斜杠,例如,在 Python 中"\\."并且r"\."是相同的。

于 2012-10-04T11:21:26.363 回答
0

你甚至读过?regexp吗?它写在那里。据我所见,使用了“POSIX 1003.2”正则表达式。

于 2012-10-04T09:00:14.480 回答