-3

で終わるファイルを取得します。、できること:
1.R

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

また

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

R で \ を 2 倍にする必要があります。どちら.+\.$ も使用できません\.$

2.パイソン

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  ".+\.$"

シェルでも「.+\.$」を使用できます

1.と
の間の posix の方法を知りたい です。 2.シェルで 使用できないのはなぜですか?.+\\.$.+\.$
find /home/test -regex "\.$"

4

2 に答える 2

1

入力したものと正規表現エンジンが最終的に見るものには違いがあります。

次の 2 つの質問が考えられます。

  • ツール (R、Python、find) が理解できる正規表現のフレーバーは?

    たとえば、Python を使用するとします。reモジュールがサポートする構文は何ですか?

  • 正規表現を入力するにはどうすればよいですか?

    たとえば、".+\.$"infind -regex ".+\.$"は最初にシェルによって解釈されます。質問は、シェルがどのように解釈する".+\.$"かになります。答えたら、どの正規表現構文がfindサポートされているかを尋ねることができますか?

POSIX 正規表現では、パターン内に 1 つのバックスラッシュ\.(リテラル ドットと一致するため) が必要ですが、特定の環境で入力するには、Python"\\."などで 2 つのバックスラッシュが必要になる場合があり、r"\."それらは同じです。

于 2012-10-04T11:21:26.363 に答える
0

あなたも読みました?regexpか?そこに書いてあります。私が見たところ、「POSIX 1003.2」の正規表現が使用されています。

于 2012-10-04T09:00:14.480 に答える