0

A\/*\/B\/*\/Cパスの一致/不一致の決定を作成するには、疑似正規表現パターンを正規表現に変換する必要があります。* はメタ文字として機能し、スラッシュの間の任意の文字列または数字のセットに一致します。上記の正規表現は「フィールド依存」です。つまり、スラッシュの間に特定の文字またはメタ文字の正確なシーケンスを持つ文字列にのみ一致する必要があります。したがって、A\/*\/B\/*\/C(A 1 番目、次に 2 番目、B 3 番目、その後 4 番目、C 5 番目) は'A/foo/B/bar/C' 、A が 1 番目、B が 3 番目などと一致する必要がありますが、A が 1 番目、B が 3 番目ではなく4 番目に表示されるようには一致しませA/foo/bar/B/baz/Cん。 、私たちが望むところ。

正規表現以外でこの問題の解決策に取り組んできましたが、正規表現のみの解決策があるかどうかを確認したいと考えています。

これまでのところ、私はこれを持っています:

import re
matcher=re.compile('[A\/(.*?)\/B\/(.*?)\/C]')
matched=matcher.match('A/foo/bar/B/baz/C')
print matched 
<_sre.SRE_Match object at 0x005CBBB8>
print matched.group()
A

ご覧のとおり、問題は、A/foo/bar/B/baz/CA と B の間に別のスラッシュが表示されてもかまわないため、一致することです。修正方法についての考えはありますか?

4

1 に答える 1