5 ms·
I haven't been able to figure out how to match a one-sided word boundary using git-grep. For example, say a file includes the word "router". You can do this to
by gruseom 13y ago
I haven't been able to figure out how to match a one-sided word boundary using git-grep. For example, say a file includes the word "router". You can do this to match the exact word:
git grep -w router
But what if you want to match just the word boundary at the start ("rout") or at the end ("outer")?
- nephyrin 13y agogit grep -E '\brout|outer\b'
- gruseom 13y agoAre you sure this works? I've tried it many times.
- moonboots 13y agoThe "--perl-regexp" flag to git grep enables perl flavored regexes, which contain explicit word boundary matching. To match only word starts, you could use the following: git grep --perl-regexp "\brout" and for just word endings git grep --perl-regexp "outer\b"
- gruseom 13y agoThis doesn't work for me, nor do the other two users' suggestions. I even just rebuilt git in case my version was out of date.
- dfc 13y agoAre you using homebrew? $ brew info git git: stable 1.8.3.2, HEAD http://git-scm.com /usr/local/Cellar/git/HEAD (1324 files, 29M) * Built from source with: --with-blk-sha1 --with-pcre From: https://github.com/mxcl/homebrew/commits/master/Library/Formula/git.rb ==> Dependencies Optional: pcre, gettext ==> Options --with-blk-sha1 Compile with the block-optimized SHA1 implementation --with-gettext Build with gettext support --with-pcre Build with pcre support --without-completions Disable bash/zsh completions from "contrib" directory What does "built from source with" say?
- gruseom 13y agoI don't use homebrew, but your comment made me realize what I needed to do to successfully compile git with pcre. As a result, this now works: git grep -P "outer\b" Yay! Thank you and moonboots. This is an important feature for me, because I organize my code lexically (primarily by being disciplined about using unique names for things) and rely on grep to quickly find what I want. Occasionally one unique name overlaps with another, and then I really want to match the word boundary.
- michaelmior 13y agogit grep '\<rout'
- gruseom 13y agoThis is the syntax I use in Emacs, so I would love it if git-grep would do the same. But it doesn't, for me. Are you sure that it does for you?
- emmelaich 13y agoWorks for me (git 1.7.7.6) https://news.ycombinator.com/item?id=6017401 https://news.ycombinator.com/item?id=6017401
- gruseom 13y agoHuh. How annoying that it doesn't just work everywhere. Annoying in two ways, actually: one, I want it to work; two, it bugs me not to understand what's going on.
- emmelaich 13y agoThe standard grep symbols for beginning and end of word are \< and \> So try those. (I don't have a git repo handy to test) (edit: I tested and it works)