1

1 つの正規表現を使用して、次の文字列から値を取得するにはどうすればよいですか?

/*##debug_string:value/##*/

また

/*##debug_string:1234/##*/

また

/*##debug_string:http://stackoverflow.com//##*/

結果は

value
1234
http://stackoverflow.com/
4

4 に答える 4

2

あなたのパターンの後ろを読もうとしている

re.findall("/\*##debug_string:(.*?)/##\*/", your_string)

をエスケープしなかったため、バリエーションが機能しないことに注意してください*。正規表現で*は、前の文字/グループの繰り返しを意味します。*本当にそのキャラクターを意味する場合は、 を使用する必要があります\*

import re
print re.findall("/\*##debug_string:(.*?)/##\*/", "/*##debug_string:value/##*/")
print re.findall("/\*##debug_string:(.*?)/##\*/", "/*##debug_string:1234/##*/")
print re.findall("/\*##debug_string:(.*?)/##\*/", "/*##debug_string:http://stackoverflow.com//##*/")

次のように実行します。

['value']
['1234']
['http://stackoverflow.com/']

編集: URL を取得できることがわかりました。それを考慮してパターンを修正しました。

于 2013-06-19T15:40:09.197 に答える
2

次の正規表現を使用します。

[^:]+:([^/]+)

そして、値にキャプチャ グループ #1 を使用します。

ライブデモ: http://www.rubular.com/r/FxFnpfPHFn

于 2013-06-19T15:35:20.110 に答える
1

フォーマットが一貫していると仮定すると、次のようになります。

re.findall('debug_string:([^\/]+)\/##', string)
于 2013-06-19T15:37:33.577 に答える