私は次の文字列
TreeModel/Node/Node[1]/Node[4]/Node[1]
で見つけようとしていますこの :
TreeModel/Node
TreeModel/Node/Node[1]
TreeModel/Node/Node[1]/Node[4]
TreeModel/Node/Node[1]/Node[4]/Node[1]
正規表現を使用する Pythonで。私が試したコードは次のとおりです。
string = 'TreeModel/Node/Node[1]/Node[4]/Node[1]'
pattern = r'.+?Node\[[1-9]\]'
print re.findall(pattern=pattern,string=string)
#result : ['TreeModel/Node/Node[1]', '/Node[4]', '/Node[1]']
#expected result : ['TreeModel/Node', 'TreeModel/Node/Node[1]', 'TreeModel/Node/Node[1]/Node[4]', 'TreeModel/Node/Node[1]/Node[4]/Node[1]']
回答 2 件
ここでsplitを使用できます:
>>> s = 'TreeModel/Node/Node[1]/Node[4]/Node[1]' >>> split_s = s.split('/') >>> ['/'.join(split_s[:i]) for i in range(2, len(split_s)+1)] ['TreeModel/Node', 'TreeModel/Node/Node[1]', 'TreeModel/Node/Node[1]/Node[4]', 'TreeModel/Node/Node[1]/Node[4]/Node[1]']
正規表現も使用できます。
for i in range(2, s.count('/')+2): s_ = '[^/]+/*' regex = re.search(r'('+s_*i+')', s).group(0) print(regex) TreeModel/Node/ TreeModel/Node/Node[1]/ TreeModel/Node/Node[1]/Node[4]/ TreeModel/Node/Node[1]/Node[4]/Node[1]
関連記事
- 文字列から日付形式を検索する正規表現
- 正規表現を使用して文字列を解析する方法
- Python、二重引用符で囲まれた文字列内に引用符で囲まれた文字を検出する
- Pythonで '\ am'文字列を表す方法は?
- 正規表現置換Pythonで正規表現変数に置き換えることができません
- Python Webscraping:入力タグからvalue属性の文字列を取得するにはどうすればよいですか?
- 指定されたPythonコードからのすべてのインポートを文字列として一覧表示します
- 正規表現では、特定の文字列パターンに一致しますが、コメントアウトされている行は省略します
- 縮約のアポストロフィを削除するPython正規表現
- 正規表現:検索文字列が[\ a-z] +で終わる
私はPythonでは全く得意ではありませんが、regexの下の文字列の特定の構造を持つ正規表現の部分は、各セグメントに一致します:
中括弧とその前の
/
オプションです。スラッシュマーク(存在する場合)に一致し、そのコンテンツ(存在する場合)に中かっこがあり、残りは次のスラッシュマークまで一致します。Pythonコード(こちらのライブデモをご覧ください):