回答編集履歴
4
追記
    
        answer	
    CHANGED
    
    | @@ -11,4 +11,11 @@ | |
| 11 11 |  | 
| 12 12 | 
             
            `(<input\s+name="(.*?)".*?(?<!-)>)`
         | 
| 13 13 |  | 
| 14 | 
            -
            当然`=>`とかがあればそこで止まっちゃうことになります。
         | 
| 14 | 
            +
            当然`=>`とかがあればそこで止まっちゃうことになります。
         | 
| 15 | 
            +
             | 
| 16 | 
            +
            解説
         | 
| 17 | 
            +
             | 
| 18 | 
            +
            否定的後読み(?<!pattern)
         | 
| 19 | 
            +
            というものが使用できます。
         | 
| 20 | 
            +
             | 
| 21 | 
            +
            [正規表現の先読み・後読みを極める! - あらびき日記](https://abicky.net/2010/05/30/135112/)
         | 
3
コードを修正
    
        answer	
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 | 
            -
            そもそも`hoge`の後ろのダブルクオートで止まってます?
         | 
| 1 | 
            +
            ~~そもそも`hoge`の後ろのダブルクオートで止まってます?~~
         | 
| 2 | 
            -
            あと`->`で止まるのは最短一致だから。
         | 
| 2 | 
            +
            ~~あと`->`で止まるのは最短一致だから。~~
         | 
| 3 3 |  | 
| 4 | 
            -
            `(<input\s+name="([^"]*?)".*>)` でいいのでは?
         | 
| 4 | 
            +
            ~~`(<input\s+name="([^"]*?)".*>)` でいいのでは?~~
         | 
| 5 5 |  | 
| 6 | 
            -
            ( | 
| 6 | 
            +
            (上のはちょっと勘違い)
         | 
| 7 7 |  | 
| 8 8 | 
             
            単一のタグだけ取り出したいので最短一致にしないといけないのはわかります。
         | 
| 9 9 | 
             
            しかしクオートで囲まれた中の文字を無視するという都合の良いことは正規表現ではできません。
         | 
| 10 10 | 
             
            しょうがないので`->`ではない`>`を目指すしかないですね。
         | 
| 11 11 |  | 
| 12 | 
            -
            `(<input\s+name="( | 
| 12 | 
            +
            `(<input\s+name="(.*?)".*?(?<!-)>)`
         | 
| 13 13 |  | 
| 14 14 | 
             
            当然`=>`とかがあればそこで止まっちゃうことになります。
         | 
2
追記
    
        answer	
    CHANGED
    
    | @@ -1,4 +1,14 @@ | |
| 1 1 | 
             
            そもそも`hoge`の後ろのダブルクオートで止まってます?
         | 
| 2 2 | 
             
            あと`->`で止まるのは最短一致だから。
         | 
| 3 3 |  | 
| 4 | 
            -
            `(<input\s+name="([^"]*?)".*>)` でいいのでは?
         | 
| 4 | 
            +
            `(<input\s+name="([^"]*?)".*>)` でいいのでは?
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            (追記)
         | 
| 7 | 
            +
             | 
| 8 | 
            +
            単一のタグだけ取り出したいので最短一致にしないといけないのはわかります。
         | 
| 9 | 
            +
            しかしクオートで囲まれた中の文字を無視するという都合の良いことは正規表現ではできません。
         | 
| 10 | 
            +
            しょうがないので`->`ではない`>`を目指すしかないですね。
         | 
| 11 | 
            +
             | 
| 12 | 
            +
            `(<input\s+name="([^"]*?)".*?(?<!-)>)`
         | 
| 13 | 
            +
             | 
| 14 | 
            +
            当然`=>`とかがあればそこで止まっちゃうことになります。
         | 
1
コードを修正
    
        answer	
    CHANGED
    
    | @@ -1,3 +1,4 @@ | |
| 1 1 | 
             
            そもそも`hoge`の後ろのダブルクオートで止まってます?
         | 
| 2 | 
            +
            あと`->`で止まるのは最短一致だから。
         | 
| 2 3 |  | 
| 3 | 
            -
            `(<input\s+name="([^"]*?)".* | 
| 4 | 
            +
            `(<input\s+name="([^"]*?)".*>)` でいいのでは?
         | 
