社内se × プログラマ × ビッグデータ

プログラミングなどITに興味があります。

正規表現での実例パート1

1. Java Integer の変数名を含む行にマッチさせる
src 内にあるすべてのファイルを検索させている。

$ egrep -hr 'p(rivate|ublic|rotect) +Integer +[a-zA-Z_0-9]+' src
	private Integer speed;
		private Integer speed;
	public Integer generateNumber() {
	public Integer getAverage() {
	private Integer price;
	private Integer reviewNum;
	public Integer getPrice() {
	public Integer getReviewNum() {
		private Integer sales;
		public Integer getSales() {

2. ダブルクォートで囲まれた文字列を含む行にマッチさせる
[^"]* は”ダブルクォート以外の文字列”を表現している。

$ egrep -hr '"[^"]*"' src
		Member member = new Member(1, "hoge");
		PointCard pointCard = new PointCard(1, "hoge", 2000L);
		assertTrue(wb.getMessage().equals("This is example."));
		Whitebox.setInternalState(wb, "message", "overwritten the message.");
		assertTrue(wb.getMessage().equals("overwritten the message."));
		assertThat(memberMock.getMemberNameAndPoint(), is("hoge_7777"));
		when(birthMonth.getBirthStone(anyInt())).thenReturn("not found");
		when(birthMonth.getBirthStone(2)).thenReturn("amethyst");
		when(birthMonth.getBirthStone(7)).thenReturn("ruby");
		when(birthMonth.getBirthStone(11)).thenReturn("topaz");

3. ドル金額のみが含まれる行にマッチさせる
以下のようなテキスト(text.txt)があるとする。

082
1040.2
$56
23
$8.11
$abc
$77.7 in total

^..$ で囲んでいるため、"$77.7 in total" はマッチ対象にならない。

$ egrep -i '^\$[0-9]+(.[0-9]+)?$' text.txt 
$56
$8.11