0

文字列が正規表現パターンに一致するかどうかを判断しようとしています。

expected = re.compile(r'session \d+: running')
string = "session 1234567890: running"
re.match(expected, string)

ただし、re.match()常にを返しますNone。小数を間違って一致させようとしていますか?数字は10桁ですが、多かれ少なかれ桁数の場合をカバーしたいと思います。

編集:文字列パラメータは、実際には以前の一致の結果です:

expected = re.compile(r'session \d+: running')
found = re.match(otherRegex, otherString)
re.match(expected, found.groups()[0])

found.groups()[0]私がそれのタイプを印刷するとき、class strそして私が印刷するときfound.groups()[0]、それは私が期待する文字列を印刷します:"session 1234567890: running"。これが私にとってうまくいかない理由でしょうか?

4

2 に答える 2

1

いいえ、そうではありません。私にとっては問題なく機能します。

In [219]: strs = "session 1234567890: running"

In [220]: expected = re.compile(r'session \d+: running')

In [221]: x=re.match(expected, strs)

In [222]: x.group()
Out[222]: 'session 1234567890: running'
于 2012-10-24T16:47:04.407 に答える
0

私の質問では、文字列を関連する部分に短縮しました。実際の文字列は次のとおりです。

expected = re.compile(r'session \d+: running task(s)')
str = "session 1234567890: running(s)"
re.match(expected, str)

一致するものがなかった理由は、'('')'文字が特殊文字であり、それらをエスケープする必要があったためです。コードは次のとおりです。

expected = re.compile(r'session \d+: running task\(s\)')
str= "session 1234567890: running(s)"
re.match(expected, str)

混乱させて申し訳ありません

于 2012-10-24T17:32:14.523 に答える