1

私は pythonchallenge.com でチャレンジを行っていますが、一般的な正規表現に問題があります。

たとえば、次のテキストがあるとします。

hello world
<!--
%%$@_$^__#)^)&!_+]!*@&^}@[@%]()%+$&[(_@%+%$*^@$^!+]!&_#)_*}{}}!}_]$[%}@[{_@#_^{*
@##&{#&{&)*%(]{{([*}@[@&]+!!*{)!}{%+{))])[!^})+)$]#{*+^((@^@}$[*a*$&^{$!@#$%)!@(&bc  

そして、文字 a と b と c を (上記の文字列から) 文字列に取得したい (ただし、Hello World ではありません) どうすればこれを行うことができますか?

Pythonで次のことができることを理解しています:

x = "".join(re.findall("regex", data))

ただし、正規表現に問題があります。正規表現テスターでテストしていますが、やりたいことをしていないようです

これが私の正規表現です

<!--[a-z]*

私の理解では、(regex-expression.infoチュートリアルを読んだ後)この式は、指定された文字列の後のすべての文字を見つける必要があります:outputting abc

ただし、これは機能しません。[\^$.|?*+() のいずれでもないため、これも特殊文字ではないことを理解しています。

この正規表現を希望どおりに機能させるにはどうすればよいですか? abc を含めるが、hello world を含めるには?

4

2 に答える 2

1
>>> import re
>>> print strs = """hello world
<!--
%%$@_$^__#)^)&!_+]!*@&^}@[@%]()%+$&[(_@%+%$*^@$^!+]!&_#)_*}{}}!}_]$[%}@[{_@#_^{*
@##&{#&{&)*%(]{{([*}@[@&]+!!*{)!}{%+{))])[!^})+)$]#{*+^((@^@}$[*a*$&^{$!@#$%)!@(&bc"""
>>> re.findall(r'[a-zA-Z]+',strs.split('<!--')[-1])
['a', 'bc']
于 2013-07-07T10:37:18.010 に答える