0

次のような IRC ログを解析しようとしています。

2013-09-26T01:52:40  <Shan-x> some stuff

私は疑似をしたいので、次を使用しますre

re.search('%s(.*)%s' % ('<', '>'), s).group(1)

しかし、ログが次のような場合:

2013-09-26T01:52:40  <Shan-x> some stuff > foo bar

次に、これを取得します: Shan-x> some stuff. pseudo のみを持つように解析するにはどうすればよいですか?

4

1 に答える 1

2

量指定子に aを追加して、.* 非貪欲にする必要があります。?*

re.search('%s(.*?)%s' % ('<', '>'), s).group(1)

は、デフォルトの最大文字数ではなく、パターンを満たす最小文字数に.一致するようになりました。

ただし、ここで文字列補間を使用する理由がわかりません。静的文字の場合は、次を使用してください。

re.search('<(.*?)>', s).group(1)

末尾の文字に一致しないすべての文字をキャプチャすることもできます。

re.search('<([^>]*)>', s).group(1)

ここでは、クラスにない[^>]任意の文字に一致する文字クラスを形成します。したがって、そうでない文字はすべて資格があります。>

于 2013-11-08T15:18:18.813 に答える