<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>正規表現 on dyama&#39;s page</title>
		<link>https://dyama.org/tag/%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE/</link>
		<description>Recent content in 正規表現 on dyama&#39;s page</description>
		<generator>Hugo</generator>
		<language>ja</language>
		
		
		
		
			<lastBuildDate>Fri, 04 Dec 2015 22:00:04 +0900</lastBuildDate>
		
			<atom:link href="https://dyama.org/tag/%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>mruby-regexp-pcre の String#gsub について</title>
				<link>https://dyama.org/2015/12/2506/</link>
				<pubDate>Fri, 04 Dec 2015 22:00:04 +0900</pubDate>
				<guid>https://dyama.org/2015/12/2506/</guid>
				<description>&lt;p&gt;&lt;img src=&#34;https://dyama.org/wp-content/uploads/mruby-logo.png&#34; alt=&#34;&#34; loading=&#34;lazy&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;IIJ さんが開発している mruby 向けの正規表現ライブラリ &lt;a href=&#34;https://github.com/iij/mruby-regexp-pcre&#34;&gt;iij/mruby-regexp-pcre&lt;/a&gt; を使ってたら、本家 CRuby と違う挙動の部分を見つけました。&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;# 文字列の先頭に空白が含まれている場合、それを取り除く。&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;#34;foo&amp;#34;.gsub /^\s*/, &amp;#34;&amp;#34;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;上の &lt;code&gt;&amp;quot;foo&amp;quot;&lt;/code&gt; の場合では、先頭に空白は含まれていないので、そのままの文字列 &lt;code&gt;&amp;quot;foo&amp;quot;&lt;/code&gt; が返ってくるはずです。 iij/mruby-regexp-pcre を使うと、これが空の文字列 &lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt; として返ってきてました。 CRuby1.9.3 でチェックしてみたところ、&lt;code&gt;&amp;quot;foo&amp;quot;&lt;/code&gt; が返ってきています。&lt;/p&gt;</description>
			</item>
			<item>
				<title>tr1の正規表現ライブラリを使う</title>
				<link>https://dyama.org/2013/06/823/</link>
				<pubDate>Sun, 09 Jun 2013 00:00:59 +0900</pubDate>
				<guid>https://dyama.org/2013/06/823/</guid>
				<description>&lt;p&gt;Microsoft Visual Studio 2008 の SP1 からは &lt;a href=&#34;https://ja.wikipedia.org/wiki/C%2B%2B_Technical_Report_1&#34;&gt;C++ Technical Report 1&lt;/a&gt; (TR1)をサポートしているので、&lt;a href=&#34;https://dyama.org/2012/10/386/&#34;&gt;Boost&lt;/a&gt; やPCRE などのライブラリを用いずに正規表現を扱うことができます。&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-cpp&#34; data-lang=&#34;cpp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;#include&lt;/span&gt; &lt;span style=&#34;color:#57606a&#34;&gt;&amp;lt;iostream&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;#include&lt;/span&gt; &lt;span style=&#34;color:#57606a&#34;&gt;&amp;lt;string&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;#include&lt;/span&gt; &lt;span style=&#34;color:#57606a&#34;&gt;&amp;lt;regex&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;// usage: a.exe pattern replace-to&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;using&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;namespace&lt;/span&gt; std&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;int&lt;/span&gt; &lt;span style=&#34;color:#6639ba&#34;&gt;main&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;int&lt;/span&gt; c&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;char&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;**&lt;/span&gt; v&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;c &lt;span style=&#34;color:#0550ae&#34;&gt;!=&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;3&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;tr1&lt;span style=&#34;color:#0550ae&#34;&gt;::&lt;/span&gt;regex ex&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;v&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;]);&lt;/span&gt; &lt;span style=&#34;color:#57606a&#34;&gt;// 正規表現オブジェクト&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#cf222e&#34;&gt;char&lt;/span&gt; buf&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;256&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;];&lt;/span&gt;       &lt;span style=&#34;color:#57606a&#34;&gt;// 読み取り用のバッファ&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;while&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;cin&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;getline&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;buf&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;sizeof&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;buf&lt;span style=&#34;color:#1f2328&#34;&gt;)))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    cout &lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; tr1&lt;span style=&#34;color:#0550ae&#34;&gt;::&lt;/span&gt;regex_replace&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;string&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;buf&lt;span style=&#34;color:#1f2328&#34;&gt;),&lt;/span&gt; ex&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; string&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;v&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;]))&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; endl&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;a href=&#34;https://dyama.org/2012/10/386/&#34;&gt;Boost のコード&lt;/a&gt;と比べれば、名前空間が boost から tr1 に変わったこと、regex ヘッダが標準パスに入ったこと、regex_replace() の第3引数が char* から std::string に変わったことくらいでしょうか。Boost からの移植ですので、互換性があって当然ですね。&lt;/p&gt;</description>
			</item>
			<item>
				<title>ロブ・パイクの正規表現マッチャを拡張する</title>
				<link>https://dyama.org/2013/01/658/</link>
				<pubDate>Wed, 02 Jan 2013 00:00:05 +0900</pubDate>
				<guid>https://dyama.org/2013/01/658/</guid>
				<description>&lt;p&gt;ブライアン・カーニハンとロブ・パイクによる &lt;a href=&#34;http://books.google.co.jp/books?id=to6M9_dbjosC&#34;&gt;The practice of programming&lt;/a&gt; (邦題:&lt;a href=&#34;http://www.amazon.co.jp/gp/product/4756136494/ref=as_li_ss_tl?ie=UTF8&amp;amp;camp=247&amp;amp;creative=7399&amp;amp;creativeASIN=4756136494&amp;amp;linkCode=as2&amp;amp;tag=dyama0c-22&#34;&gt;プログラミング作法&lt;/a&gt;) に掲載されている正規表現マッチャを拡張したいと思います。&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;※ O’Reilly から出版された &lt;a href=&#34;http://www.amazon.co.jp/gp/product/0596510047/ref=as_li_ss_tl?ie=UTF8&amp;amp;camp=247&amp;amp;creative=7399&amp;amp;creativeASIN=0596510047&amp;amp;linkCode=as2&amp;amp;tag=dyama0c-22&#34;&gt;Beautiful Code: Leading Programmers Explain How They Think&lt;/a&gt; (邦題: &lt;a href=&#34;http://www.amazon.co.jp/gp/product/4873113636/ref=as_li_ss_tl?ie=UTF8&amp;amp;camp=247&amp;amp;creative=7399&amp;amp;creativeASIN=4873113636&amp;amp;linkCode=as2&amp;amp;tag=dyama0c-22&#34;&gt;ビューティフル コード&lt;/a&gt;)にも掲載されており、該当部分の全文は&lt;a href=&#34;http://www.oreilly.co.jp/books/9784873113630/&#34;&gt;公式サイト&lt;/a&gt;で読むことができます。&lt;/p&gt;&#xA;&lt;/blockquote&gt;</description>
			</item>
			<item>
				<title>Bash, Perl, Ruby, Pythonで正規表現置換</title>
				<link>https://dyama.org/2012/10/464/</link>
				<pubDate>Tue, 23 Oct 2012 23:35:38 +0900</pubDate>
				<guid>https://dyama.org/2012/10/464/</guid>
				<description>&lt;p&gt;前回の&lt;a href=&#34;https://dyama.org/2012/10/386/&#34;&gt;C++/boost&lt;/a&gt;、&lt;a href=&#34;https://dyama.org/2012/10/456/&#34;&gt;.NET&lt;/a&gt;に加え、各種インタプリタ言語でも同じ動作をするスクリプトを書いてみました。&lt;/p&gt;&#xA;&lt;h1 id=&#34;シェルスクリプトbash&#34;&gt;シェルスクリプト(bash)&lt;/h1&gt;&#xA;&lt;p&gt;シェルスクリプトはそもそもグルー言語ですので、他のコマンドを呼び出して処理をすることが一般的です。下のサンプルではsedコマンドで置換処理をしています。bashだと正規表現マッチングは可能なので、ガリガリとスクリプトを書けばsedを使わずに実現できるかもしれません。&lt;/p&gt;</description>
			</item>
			<item>
				<title>.NETで正規表現ライブラリを使う</title>
				<link>https://dyama.org/2012/10/456/</link>
				<pubDate>Sun, 21 Oct 2012 00:00:10 +0900</pubDate>
				<guid>https://dyama.org/2012/10/456/</guid>
				<description>&lt;p&gt;&lt;a href=&#34;https://dyama.org/2012/10/386/&#34;&gt;前回のboostの正規表現ライブラリのサンプル&lt;/a&gt;に引き続き、C#とC++/CLI、VB.NETでも同じサンプルを書いてみました。全て.NET FrameworkのSystem.Text.RegularExpressions.Regexを用いています。&lt;/p&gt;&#xA;&lt;p&gt;なんてことはありませんね。&lt;/p&gt;&#xA;&lt;h1 id=&#34;c版&#34;&gt;C#版&lt;/h1&gt;&#xA;&lt;p&gt;こちらはMono 2.6.7環境のmcs/gmcsでビルドしてチェックしました。&lt;/p&gt;</description>
			</item>
			<item>
				<title>boostの正規表現ライブラリを使う</title>
				<link>https://dyama.org/2012/10/386/</link>
				<pubDate>Sun, 14 Oct 2012 00:00:27 +0900</pubDate>
				<guid>https://dyama.org/2012/10/386/</guid>
				<description>&lt;p&gt;boostの正規表現ライブラリ boost::regex を使ったサンプルです。&lt;br&gt;&#xA;boost::regex は以下のコマンドでインストールすることができます。&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ sudo aptitude install libboost-regex-dev&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;サンプル regextest.cpp を準備します。これは正規表現リプレイサです。&lt;/p&gt;</description>
			</item>
			<item>
				<title>正規表現を使ったファイル名一括変換 rename コマンド</title>
				<link>https://dyama.org/2010/12/235/</link>
				<pubDate>Fri, 31 Dec 2010 00:00:00 +0900</pubDate>
				<guid>https://dyama.org/2010/12/235/</guid>
				<description>&lt;p&gt;ファイルリネーマを書いた。引数に置換パターン、置換後文字列、ファイル名を渡すと、ファイル名を置換してくれる。正規表現は、インストールしている sed がサポートするものとなる。&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
