1

Pythonで正規表現に苦労しています。文字列の最後のトークンの位置を見つけたいと思います。

例:「mydrive / projects / test/version01」

ここで、「test」と「version01」の間のシンボルの位置を取得したいと思います。

import re
txt = "mydrive/projects/test/version01"
p = re.compile("/^.*/(.*)$/")
m = re.search(p, txt)
m.group(0) 
#but m.group(0) delivers None

しかし、これで私は「なし」を取得しています。私はいくつかのことを試しましたが、パターンを見つけることができませんでした。ちなみに、この正規表現はjavascriptページから取得しましたが、パターンは同じだと思います。

どうもありがとうございます!

4

4 に答える 4

3

reモジュールを間違った方法で使用しています。

2つのエラーがあります:

  1. コンパイルされた正規表現オブジェクトをパターンであるかのように使用しようとします。実際、これは完全に問題ありません。search.subのドキュメントを参照してください。
  2. Pythonではre、正規表現をスラッシュで囲む必要はありません。

次のいずれかを使用します。

p = re.compile("^.*/(.*)$")
m = p.search(txt)
m.group(0) 

または:

m = re.search("^.*/(.*)$", txt)
m.group(0) 
于 2013-02-01T14:49:03.237 に答える
1

あなたが言う:今、私は「テスト」と「バージョン01」の間のシンボルの位置を取得したいと思います。

正規表現がどのように役立つかわかりません。次のことを試すことができます。

シンボルが何であるかを知っている場合は、シンボルを逆スキャンします(正規表現にも含まれているため、そうしていると思います)。

>>> txt = "mydrive/projects/test/version01"
>>> txt.rfind('/')
21

セパレータがわからない場合:

>>> import os.path
>>> len(os.path.dirname(txt))
21
于 2013-02-01T14:55:35.960 に答える
1

あなたが使用したいのか、それともre実際にそのファイルパスを分割しようとしているのか知りたいですか?

os.pathそれが事実ならあなたが必要とするすべてを持っています、そうでなければ私に尋ねられていない質問に答えることを許してください。

In [212]: import os
In [213]: os.path.split("mydrive/projects/test/version01")
Out[213]: ('mydrive/projects/test', 'version01')
于 2013-02-01T14:56:59.647 に答える
0

「test」と「version01」の間の記号の位置を見つけようとしている場合は、rfindを使用します。

txt = "mydrive/projects/test/version01"
print txt.rfind("/");

印刷し21ます。

于 2013-02-01T14:54:59.727 に答える