14202


VimのNeoBundleプラグインにプラグインを追加するスクリプトを書いています。

そのため、以下のような文字列を正規表現マッチで検出したいと考えています。

`NeoBundle 'hoge/fuga.vim'`

この場合、閉じシングルクォートを除けば以下のような条件式でマッチできるのですが、閉じシングルクォートを含む条件式がわかりません。

[code]

    $ query="NeoBundle 'hoge/fuga.vim'"
    $ echo "$query" | grep -oE $'NeoBundle \'[0-9a-zA-Z\-]+/[0-9a-zA-Z\-]+'
    NeoBundle 'hoge/fuga.vim
    
[/code]

予めシングルクォートを置換するなどの対策は可能だと思いますが、対象の文字列を変更せずに正規表現マッチできないでしょうか。


CC BY-SA 3.0
2015-08-08T12:52:55.790
13180
2015-08-09T08:09:35.743
5851
question
bash
bashでシングルクォートを含む文字列を正規表現マッチさせる


@argusさんが指摘したとおり、マッチしない直接の原因は正規表現内にドット`.`と末尾のシングルクォート`'`が抜けていることだと思います。

表題のように正規表現文字列にシングルクオートを含めたいならば、文字列をダブルクォートで囲む方法が直感的に分かりやすいです。

[code]

    $ grep -oE "NeoBundle '[0-9a-zA-Z\-]+/[.0-9a-zA-Z\-]+'"
    
[/code]

文字列をシングルクォートで囲んでいる場合は、ちょっとトリッキーになります。

[code]

    $ grep -oE 'NeoBundle '\''[0-9a-zA-Z\-]+/[.0-9a-zA-Z\-]+'\'''
    
[/code]


CC BY-SA 3.0
2015-08-09T08:09:35.743
14202
2015-08-09T08:09:35.743
2391
13180
answer