0

オフ形式のpythonで文字列を解析したい

「JXE 2000 これは何とか修正するためのバグです」または形式の

「JXE-2000: This is a bug to fix blah」と、文字列に JXE と数値が含まれているかどうかを確認します。

上記の例では、文字列に JXE と 2000 が含まれているかどうかを確認する必要があります。私は Python を初めて使用します。

私は次のことを試しました:

textpattern="JXE-5000: This is bug "
text=re.compile("^([A-Z][0-9]+)*$")

text=re.search("JXE (.*)", textpattern)

print (text.groups())

「5000 This is a bug」しか表示されないようです。

4

3 に答える 3

1

別の方法として、JXEと2000の間の任意の文字を許可できます。

>>> text=re.compile("(JXE).*(2000(.*))")
>>> textpattern="JXE-2000: This is bug "
>>> text.search(textpattern).group(1,2) # or .group(1,2,3) if you want the bug as well
('JXE', '2000')

( ASCII text=re.compile("^([A-Z][0-9]+)*$"))大文字の後に任意の数字が続くグループを検索します。グループは0回以上出現します。re.compileは、必要なパターンをコンパイルするために使用されます。これにより、スクリプトの後半でパターンを指定する必要がなくなり、コードが高速になります。re.compileを使用することを選択した場合(そして実際にここで使用する必要はありません)、探しているパターンを示す必要があります(この場合、「JXE」の後に「2000」が続きます)。re.compileを使用する場合は、次の形式でこのパターンを検索しcompiled_pattern.search(string)ますtext.search(textpattern)

于 2013-01-31T04:58:02.553 に答える
0

'-'または''のいずれかを[- ]:と一致させることができます。

>>> match = re.search("JXE[- ]2000[: ]+ (.*)", "JXE-2000: This is bug ")
>>> if match is not None:
    message = match.groups()[0]

>>> print message
This is bug 
于 2013-01-31T04:55:08.950 に答える
0

キャプチャする内容によって異なります。

>>> s
['JXE 2000 This is a bug to fix blah',
 'JXE-2000: This is a bug to fix blah',
 'JXE-2000 Blah']
>>> re.search(r'JXE[-|\s+]\d+(.+)',s[0]).groups()
(' This is a bug to fix blah',)
>>> re.search(r'JXE[-|\s+]\d+(.+)',s[1]).groups()
(': This is a bug to fix blah',)
>>> re.search(r'JXE[-|\s+]\d+(.+)',s[2]).groups()
(' Blah',)

このパターンが一致するものは次のとおりです。

  • JXE- 文字J、その後にX、その後に続くE
  • [-|\s+]- ダッシュ-または 1 つ以上のスペース
  • \d+- 1 つ以上の数字
  • (.+)- 1 つまたは複数の任意の文字 (改行を除く)
于 2013-01-31T05:10:23.557 に答える