39026


変数aと変数bの間に含まれている文字列を最初にマッチしたところで取り出したいのですが、うまくいきません。以下のように書いてみたのですが最後の変数ｂまでの範囲を取得してしまい、期待する出力を得られませんでした。どうすれば解決するでしょうか。

[code]

    a = '<a>'
    b = '<b>'
    
    text = '<a>bbb<b>ccc<b>'
    r = re.search(r'%s(.*)?%s'%(a,b), text)
    
    print(r.group(1))
    
[/code]

出力結果

[code]

    bbb<b>ccc
    
[/code]

期待する出力

[code]

    bbb
    
[/code]


CC BY-SA 3.0
2017-10-25T10:20:25.503
39025
2017-10-26T00:28:08.187
2017-10-25T10:37:15.943
25679
25679
question
python python3 正規表現
python3 正規表現 指定範囲内の文字列抽出


`(.*)?`では`(.*)`があるかないか、の意味になってしまいます。`(.*?)`とすべきでしょう。ただそれよりは確実に含まれない文字で判定した方がいいです。例えば`([^<]*)`とか。


CC BY-SA 3.0
2017-10-25T10:40:30.553
39026
2017-10-25T10:40:30.553
4236
39025
answer


`<a>`と`<b>`の間だけ取りたいなら、`<a>([^<]*)<b>`とかどうでしょう？  
間に`<`が出現しないって前提ですけど。。。


CC BY-SA 3.0
2017-10-25T10:40:50.717
39027
2017-10-26T00:28:08.187
2017-10-26T00:28:08.187
2383
2383
39025
answer