<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>正規表現 | You Look Too Cool</title>
	<atom:link href="https://stabucky.com/wp/archives/tag/regular-expression/feed" rel="self" type="application/rss+xml" />
	<link>https://stabucky.com/wp</link>
	<description>ゆるくつくる stabuckyのブログ</description>
	<lastBuildDate>Thu, 10 Jul 2025 23:28:24 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://stabucky.com/wp/wp-content/uploads/2024/05/cropped-stabucky-32x32.png</url>
	<title>正規表現 | You Look Too Cool</title>
	<link>https://stabucky.com/wp</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>PHP(preg系)正規表現修飾子一覧</title>
		<link>https://stabucky.com/wp/archives/20182</link>
					<comments>https://stabucky.com/wp/archives/20182#respond</comments>
		
		<dc:creator><![CDATA[stabucky]]></dc:creator>
		<pubDate>Thu, 10 Jul 2025 23:28:24 +0000</pubDate>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[正規表現]]></category>
		<guid isPermaLink="false">https://stabucky.com/wp/?p=20182</guid>

					<description><![CDATA[目次 i (PCRE_CASELESS)m (PCRE_MULTILINE)s (PCRE_DOTALL)x (PCRE_EXTENDED)eA (PCRE_ANCHORED)D (PCRE_DOLLAR_ENDONLY [&#8230;]]]></description>
										<content:encoded><![CDATA[
  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-2" checked><label class="toc-title" for="toc-checkbox-2">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">i (PCRE_CASELESS)</a></li><li><a href="#toc2" tabindex="0">m (PCRE_MULTILINE)</a></li><li><a href="#toc3" tabindex="0">s (PCRE_DOTALL)</a></li><li><a href="#toc4" tabindex="0">x (PCRE_EXTENDED)</a></li><li><a href="#toc5" tabindex="0">e</a></li><li><a href="#toc6" tabindex="0">A (PCRE_ANCHORED)</a></li><li><a href="#toc7" tabindex="0">D (PCRE_DOLLAR_ENDONLY)</a></li><li><a href="#toc8" tabindex="0">S</a></li><li><a href="#toc9" tabindex="0">U (PCRE_UNGREEDY)</a></li><li><a href="#toc10" tabindex="0">X (PCRE_EXTRA)</a></li><li><a href="#toc11" tabindex="0">u (PCRE_UTF8)</a></li></ol>
    </div>
  </div>

<h2><span id="toc1">i (PCRE_CASELESS)</span></h2>
<p>この修飾子を設定すると、パターンの中の文字は大文字にも小文字にもマッチします。</p>
<h2><span id="toc2">m (PCRE_MULTILINE)</span></h2>
<p>デフォルトで、PCREは、検索対象文字列を（実際には複数行からなる場合でも）単一の行からなるとして処理します。「行頭」メタ文字 (^) は、対象文字列の最初にしかマッチしません。一方、「行末」メタ文字 ($) は、文字列の最後、または（<i>D</i>修飾子が設定されていない場合）最後にある改行記号の前のみにしかマッチしません。この動作はPerlと同じです。</p>
<p>この修飾子を設定すると、「行頭」および「行末」メタ文字は対象文字列において、文字列の最初と最後に加えて、各改行の直前と直後にそれぞれマッチします。この動作は、Perlの /m 修飾子と同じです。対象文字列の中に&#8221;\n&#8221;文字がない場合や、またはパターンに ^ または $ がない場合は、この修飾子を設定しても意味はありません。</p>
<h2><span id="toc3">s (PCRE_DOTALL)</span></h2>
<p>この修飾子を設定すると、パターン中のドットメタ文字は改行を含む全ての文字にマッチします。これを設定しない場合は、改行にはマッチしません。この修飾子は、Perlの /s 修飾子と同じです。[^a]のような否定の文字クラスは、この修飾子の設定によらず、常に改行文字にマッチします。</p>
<h2><span id="toc4">x (PCRE_EXTENDED)</span></h2>
<p>この修飾子を設定すると、エスケープするか文字クラスの内部を除き、パターンの空白文字は完全に無視されます。文字クラスの外にあって、かつエスケープされていない # と次の改行文字の間の文字も無視されます。この動作は、Perlの /x 修飾子と同じであり、複雑なパターンの内部にコメントを記述することが可能となります。しかし、この修飾子は、データ文字にのみ適用されることに注意してください。空白文字をパターンの特殊文字の並びの中、例えば条件付きサブパターン (?( の内部に置くことはできません。</p>
<h2><span id="toc5">e</span></h2>
<p>この修飾子を設定すると、<b>preg_replace()</b>は、置換文字列において後方参照に関する通常の置換を行った後、PHPコードとして評価し、検索文字列を置換するためにその結果を使用します。置換された後方参照においては、単引用符および二重引用符はバックスラッシュでエスケープされます。</p>
<p>この修飾子を使用するのは、<b>preg_replace()</b>のみです。他のPCRE関数では無視されます。</p>
<h2><span id="toc6">A (PCRE_ANCHORED)</span></h2>
<p>この修飾子を設定すると、パターンは強制的に固定(anchored)となります。つまり、検索対象文字列の先頭でのみマッチするように制限されます。パターン自体の中に適当な指定を行うことでも同様の効果を得ることが可能です。Perlではパターン中に指定する方法しか使用できません。</p>
<h2><span id="toc7">D (PCRE_DOLLAR_ENDONLY)</span></h2>
<p>この修飾子を設定すると、パターン内のドルメタ文字は、検索対象文字列の終わりにのみマッチします。この修飾子を設定しない場合、ドル記号は、検索対象文字列の最後の文字が改行文字であれば、その直前にもマッチします。この修飾子は、<i>m</i>を設定している場合に無視されます。Perlには、この修飾子に等価なものはありません。</p>
<h2><span id="toc8">S</span></h2>
<p>あるパターンを複数回使用する場合は、マッチングにかかる時間を高速化することを目的として、パターンの分析に幾分か時間をかけても良いでしょう。この修飾子を設定すると、追加のパターン分析が行われます。現在、パターン分析は、最初の文字が単一ではなく、かつ固定でないパターンに対してのみ有用です。</p>
<h2><span id="toc9">U (PCRE_UNGREEDY)</span></h2>
<p>この修飾子を設定すると、量指定子の「貪欲さ」が反転します。つまり、量指定子は、デフォルトで貪欲でなく、疑問符を後ろに付けてはじめて貪欲になるようになります。この修飾子はPerl互換では有りません。同様の設定は、(?U)修飾子をパターン内で設定するか、（<i>.*?</i>のように）量指定子の後に疑問符を付けるかすることで行うこともできます。</p>
<h2><span id="toc10">X (PCRE_EXTRA)</span></h2>
<p>この修正子は、Perl非互換なPCREの機能を有効にします。パターン内で後ろに文字が続くバックスラッシュで特別な意味がないものは、将来的な拡張の際の互換性の維持のため、エラーになります。デフォルトでは、Perlのように文字が後ろに続くバックスラッシュで特に意味がないものは、リテラルとして処理されます。この修飾子により制御される機能は、現在の所、これだけです。</p>
<h2><span id="toc11">u (PCRE_UTF8)</span></h2>
<p>この修正子は、Perl非互換なPCREの機能を有効にします。パターン文字列は、UTF-8エンコードされた文字列として処理されます。この修正子は、UNIXではPHP4.1.0以降、Win32ではPHP4.2.3以降で使用可能です。また、PHP4.3.5以降では、パターンのUTF-8としての妥当性も確認されます。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://stabucky.com/wp/archives/20182/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>正規表現の基本を練習できる「正規表現百本ノック」</title>
		<link>https://stabucky.com/wp/archives/19151</link>
					<comments>https://stabucky.com/wp/archives/19151#respond</comments>
		
		<dc:creator><![CDATA[stabucky]]></dc:creator>
		<pubDate>Fri, 20 Dec 2024 12:46:12 +0000</pubDate>
				<category><![CDATA[Tool]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[正規表現]]></category>
		<guid isPermaLink="false">https://stabucky.com/wp/?p=19151</guid>

					<description><![CDATA[正規表現の基本を練習できるページを作ってみました。 &#27491;&#35215;&#34920;&#29694;&#30334;&#26412;&#12494;&#12483;&#12463;tool.stabuck [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>正規表現の基本を練習できるページを作ってみました。</p>

<a rel="noopener" href="https://tool.stabucky.com/box/regular/" title="&#27491;&#35215;&#34920;&#29694;&#30334;&#26412;&#12494;&#12483;&#12463;" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img decoding="async" src="https://s.wordpress.com/mshots/v1/https%3A%2F%2Ftool.stabucky.com%2Fbox%2Fregular%2F?w=160&#038;h=90" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">&#27491;&#35215;&#34920;&#29694;&#30334;&#26412;&#12494;&#12483;&#12463;</div><div class="blogcard-snippet external-blogcard-snippet"></div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img decoding="async" src="https://www.google.com/s2/favicons?domain=https://tool.stabucky.com/box/regular/" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">tool.stabucky.com</div></div></div></div></a>
<p>JavaScriptを使っているので、正規表現もそれに従います。<br />
初級者向けになっていますが、最後の方は難しいかもしれません。<br />
実際は100本もありません。公開時点では56本です。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://stabucky.com/wp/archives/19151/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>正規表現\wが対応している具体的な内容</title>
		<link>https://stabucky.com/wp/archives/19103</link>
					<comments>https://stabucky.com/wp/archives/19103#respond</comments>
		
		<dc:creator><![CDATA[stabucky]]></dc:creator>
		<pubDate>Thu, 12 Dec 2024 23:49:46 +0000</pubDate>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[正規表現]]></category>
		<guid isPermaLink="false">https://stabucky.com/wp/?p=19103</guid>

					<description><![CDATA[正規表現に\wというのがあります。 word characterの略と思われます。 一般に「英単語に使われる文字」を抽出する際に使われます。 いつも漠然と使っていましたが、具体的にはどの文字に対応しているのでしょうか。  [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>正規表現に\wというのがあります。<br />
word characterの略と思われます。<br />
一般に「英単語に使われる文字」を抽出する際に使われます。<br />
いつも漠然と使っていましたが、具体的にはどの文字に対応しているのでしょうか。</p>
<p>先に答えを書きます。</p>
<p>0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz</p>
<p>これはJavaScriptで実際にコードを書いて\wにヒットするものを出力したものです。<br />
半角の数字、英大文字、英小文字、アンダースコアが該当します。<br />
スペース、ドットなどは該当しません。<br />
[0-9A-Za-z_]と書くのと同じです。</p>
<p>蛇足ですがこれを出力する際に使ったコードです。</p>
<div class="codecolorer-container javascript dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:400px;"><div class="javascript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;"><span style="color: #006600; font-style: italic;">// 英数字（word characters）を格納する配列</span><br />
<span style="color: #000066; font-weight: bold;">const</span> wordCharacters <span style="color: #339933;">=</span> <span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #006600; font-style: italic;">// ASCIIコード32から126までの文字を走査</span><br />
<span style="color: #000066; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span>let asciiCode <span style="color: #339933;">=</span> <span style="color: #CC0000;">32</span><span style="color: #339933;">;</span> asciiCode <span style="color: #339933;">&lt;</span> <span style="color: #CC0000;">127</span><span style="color: #339933;">;</span> asciiCode<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; <span style="color: #006600; font-style: italic;">// ASCIIコードを文字に変換</span><br />
&nbsp; <span style="color: #000066; font-weight: bold;">const</span> currentCharacter <span style="color: #339933;">=</span> <span style="">String</span>.<span style="color: #660066;">fromCharCode</span><span style="color: #009900;">&#40;</span>asciiCode<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; <br />
&nbsp; <span style="color: #006600; font-style: italic;">// 英数字（word character）の場合のみ配列に追加</span><br />
&nbsp; <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>currentCharacter.<span style="color: #660066;">match</span><span style="color: #009900;">&#40;</span><span style="color: #009966; font-style: italic;">/\w/</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; wordCharacters.<span style="color: #660066;">push</span><span style="color: #009900;">&#40;</span>currentCharacter<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; <span style="color: #009900;">&#125;</span><br />
<span style="color: #009900;">&#125;</span><br />
<br />
<span style="color: #006600; font-style: italic;">// 抽出した英数字を文字列として出力</span><br />
console.<span style="color: #660066;">log</span><span style="color: #009900;">&#40;</span>wordCharacters.<span style="color: #660066;">join</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div></div>
]]></content:encoded>
					
					<wfw:commentRss>https://stabucky.com/wp/archives/19103/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>UiPathで【一致するパターンを置換】を使って文字列を取得する方法</title>
		<link>https://stabucky.com/wp/archives/19054</link>
					<comments>https://stabucky.com/wp/archives/19054#respond</comments>
		
		<dc:creator><![CDATA[stabucky]]></dc:creator>
		<pubDate>Tue, 03 Dec 2024 11:55:01 +0000</pubDate>
				<category><![CDATA[デジタル]]></category>
		<category><![CDATA[UiPath]]></category>
		<category><![CDATA[正規表現]]></category>
		<guid isPermaLink="false">https://stabucky.com/wp/?p=19054</guid>

					<description><![CDATA[目次 正規表現を使うアクティビティ文字列を取得する方法【一致するパターンを探す】を使って文字列を取得する方法使用例「abc123」から「123」を取得電話番号を取得見出しの右にある文字列を取得正規表現の基本 正規表現を使 [&#8230;]]]></description>
										<content:encoded><![CDATA[
  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-8" checked><label class="toc-title" for="toc-checkbox-8">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">正規表現を使うアクティビティ</a></li><li><a href="#toc2" tabindex="0">文字列を取得する方法</a></li><li><a href="#toc3" tabindex="0">【一致するパターンを探す】を使って文字列を取得する方法</a></li><li><a href="#toc4" tabindex="0">使用例</a><ol><li><a href="#toc5" tabindex="0">「abc123」から「123」を取得</a></li><li><a href="#toc6" tabindex="0">電話番号を取得</a></li><li><a href="#toc7" tabindex="0">見出しの右にある文字列を取得</a></li></ol></li><li><a href="#toc8" tabindex="0">正規表現の基本</a></li></ol>
    </div>
  </div>

<h2><span id="toc1">正規表現を使うアクティビティ</span></h2>
<p>UiPathには正規表現を使うアクティビティがいくつかある。</p>
<p>【一致するパターンを置換】<br />
英語名：Replace<br />
正規表現に一致するすべての文字列を他の文字列に置換して返す。</p>
<p>【一致するパターンを探す】<br />
英語名：Matches<br />
正規表現に一致するすべての文字列を返す。</p>
<p>【テキストの一致を確認】<br />
英語名：IsMatch<br />
正規表現に一致するか否かを返す。</p>
<h2><span id="toc2">文字列を取得する方法</span></h2>
<p>文字列を取得するには【一致するパターンを置換】と【一致するパターンを探す】の二通りが考えられる。</p>
<p>【一致するパターンを置換】を使うときは「パターンあ(パターンい)パターンう」を「$1」に置換する方法を使う。<br />
「$1」はカッコ内のパターンに合致する文字列を返すので「パターンい」の部分が返る。<br />
以前はこれが簡単だった。<br />
しかし【一致するパターンを探す】で「最初の一致」を返すようになったのでこれを使う方が簡単。</p>
<h2><span id="toc3">【一致するパターンを探す】を使って文字列を取得する方法</span></h2>
<p>基本的な手法は次の通りである。</p>
<p>【一致するパターンを探す】<br />
検索対象のテキスト：元の文字列全体<br />
パターン：取得したい文字列を表す正規表現<br />
最初の一致：取得した文字列（を代入する変数）</p>
<h2><span id="toc4">使用例</span></h2>
<h3><span id="toc5">「abc123」から「123」を取得</span></h3>
<p>「abc123」から「数字が続く部分」を探せば「123」を取得できる。</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:400px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">textAll = &quot;abc123&quot;<br />
<br />
【一致するパターンを探す】<br />
検索対象のテキスト：textAll<br />
パターン：&quot;\d+&quot;<br />
最初の一致：textMatch</div></div>
<p>結果<br />
textMatch→123</p>
<p>パターンは正規表現を使う。<br />
「\d」は「数字」の意味で「+」は「前の文字の1文字以上の繰り返し」の意味。<br />
「\d+」とすることで「1文字以上数字」の意味となる。</p>
<h3><span id="toc6">電話番号を取得</span></h3>
<p>「数字、ハイフン、数字、ハイフン、数字」のような文字列を探せば「06-6012-3456」のような電話番号が取得できる。</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:400px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">textAll =<br />
氏名<br />
坂田三吉<br />
電話<br />
06-6012-3456<br />
<br />
<br />
【一致するパターンを探す】<br />
検索対象のテキスト：textAll<br />
パターン：&quot;\d+-\d+-\d+&quot;<br />
最初の一致：textMatch</div></div>
<p>結果<br />
textMatch→06-6012-3456</p>
<p>「\d+-\d+-\d+」とすることで「1文字以上の数字、ハイフン、1文字以上の数字、ハイフン1文字以上の数字」の意味となる。</p>
<p>ただし「2024-12-15」のような日付を拾ってしまうかもしれない。<br />
「^0\d+-\d+-\d+」としてプロパティのパターンのオプションでMultilineをオンにする。<br />
Multilineを使うと各行を別に判定する。<br />
「^」を使うと行の先頭の意味になる。<br />
電話番号は一般に0から始まるので「0\d」とする。</p>
<h3><span id="toc7">見出しの右にある文字列を取得</span></h3>
<p>「住所：神奈川県横浜市保土ケ谷区」の「住所：」の右にある文字列を探せば「神奈川県横浜市保土ケ谷区」が取得できる。</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:400px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">textAll =<br />
住所：神奈川県横浜市保土ケ谷区<br />
氏名：山田太郎<br />
<br />
【一致するパターンを探す】<br />
検索対象のテキスト：textAll<br />
パターン：&quot;(?&lt;=住所：).*&quot;<br />
最初の一致：textMatch</div></div>
<p>結果<br />
textMatch→神奈川県横浜市保土ケ谷区</p>
<p>「(?<=○○).*」とすると「○○の右にある文字列」という意味になる。



<h2><span id="toc8">正規表現の基本</span></h2>
<table class="table">
<tr>
<th>正規表現</th>
<th>意味</th>
</tr>
<tr>
<td>.</td>
<td>任意の1文字。</td>
</tr>
<tr>
<td>*</td>
<td>前の文字の0文字以上の繰り返し。ないかもしれない場合に使う。</td>
</tr>
<tr>
<td>+</td>
<td>前の文字の1文字以上の繰り返し。必ずある場合に使う。</td>
</tr>
<tr>
<td>[○-●]</td>
<td>○から●までに該当する1文字。[あ-お]とすると「あ」「い」「う」「え」「お」のいずれか。</td>
</tr>
<tr>
<td>[^パターン]</td>
<td>パターンに該当しない1文字。</td>
</tr>
<tr>
<td>\d</td>
<td>数字。[0-9]としてもよい。</td>
</tr>
<tr>
<td>\D</td>
<td>数字以外。[^0-9]としてもよい。</td>
</tr>
<tr>
<td>[a-z]</td>
<td>英小文字。</td>
</tr>
<tr>
<td>[A-Z]</td>
<td>英大文字。</td>
</tr>
<tr>
<td>{△,▲}</td>
<td>前の文字の△文字以上▲文字以下の繰り返し。\d{3,5}ならば数字3文字以上5文字以下。</td>
</tr>
<tr>
<td>^</td>
<td>文字列の先頭。</td>
</tr>
<tr>
<td>$</td>
<td>文字列の末尾。</td>
</tr>
</table>
]]></content:encoded>
					
					<wfw:commentRss>https://stabucky.com/wp/archives/19054/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>とにかく動かすPAD &#8211; テキストの解析で正規表現を使う方法</title>
		<link>https://stabucky.com/wp/archives/18093</link>
					<comments>https://stabucky.com/wp/archives/18093#respond</comments>
		
		<dc:creator><![CDATA[stabucky]]></dc:creator>
		<pubDate>Tue, 23 Jul 2024 03:13:24 +0000</pubDate>
				<category><![CDATA[マイクロソフト]]></category>
		<category><![CDATA[PAD]]></category>
		<category><![CDATA[正規表現]]></category>
		<guid isPermaLink="false">https://stabucky.com/wp/?p=18093</guid>

					<description><![CDATA[Power Automate Desktop（PAD）の「テキストの解析」アクションは、「解析するテキスト」から「検索するテキスト」を探して、それがどこにあるかを調べるものです。 しかし、正規表現を使うともっと高度なこと [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Power Automate Desktop（PAD）の「テキストの解析」アクションは、「解析するテキスト」から「検索するテキスト」を探して、それがどこにあるかを調べるものです。<br />
しかし、正規表現を使うともっと高度なことができます。<span id="more-18093"></span></p>

  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-10" checked><label class="toc-title" for="toc-checkbox-10">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">やりたいこと</a></li><li><a href="#toc2" tabindex="0">方法</a></li><li><a href="#toc3" tabindex="0">解説</a></li></ol>
    </div>
  </div>

<h2><span id="toc1">やりたいこと</span></h2>
<p>例えば次のような文字列があったとします。</p>
<p>【郵便番号】１００－００１４<br />
【住所】東京都千代田区永田町<br />
【名称】国会議事堂<br />
【竣工】１９３６年１１月７日</p>
<p>ここから住所だけを抽出したいとします。</p>
<h2><span id="toc2">方法</span></h2>
<p><strong>「ファイルからテキストを読み取る」アクション</strong></p>
<p>ファイルパス→テキストのファイルパス。<br />
内容の保存方法→単一のテキスト値<br />
エンコード→ファイルに合わせたエンコード。</p>
<p>生成された変数→FileContents</p>
<p><strong>「テキストの解析」アクション</strong></p>
<p>解析するテキスト→%FileContents%<br />
検索するテキスト→(?&lt;=【住所】).*<br />
正規表現である→オン<br />
解析の開始位置→0<br />
最初の出現箇所のみ→オン</p>
<p>生成された変数→Position, Match</p>
<p>これにより「【住所】」の右にある「東京都千代田区永田町」がMatchに格納され、取得できます。</p>
<h2><span id="toc3">解説</span></h2>
<p>正規表現を使うのがポイントです。<br />
PADで使える正規表現についてはマイクロソフトのサイトに説明があります。</p>

<a rel="noopener" href="https://learn.microsoft.com/ja-jp/dotnet/standard/base-types/regular-expression-language-quick-reference" title="正規表現言語 - クイック リファレンス - .NET" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img decoding="async" src="https://learn.microsoft.com/dotnet/media/dot-net-cross-platform.png" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">正規表現言語 - クイック リファレンス - .NET</div><div class="blogcard-snippet external-blogcard-snippet">このクイック リファレンスでは、正規表現パターンを使用して入力テキストを照合する方法について説明します。 パターンには、1 個以上の文字リテラル、演算子、またはコンストラクトが含まれます。</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://learn.microsoft.com/ja-jp/dotnet/standard/base-types/regular-expression-language-quick-reference" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">learn.microsoft.com</div></div></div></div></a>
<p>「テキストの解析」アクションは、正規表現をオンにすると、Positionの他にMatchも返します。<br />
このMatchは正規表現に一致した文字列を返すので、今回のように条件に合った文字列を取得するのに使えます。<br />
また今回は「肯定後読み」というのを使っています。「あるパターンの後にある文字列」を取得できます。<br />
他に「肯定先読み」「否定先読み」「否定後読み」があります。<br />
詳しくは上述のマイクロソフトのサイトを確認ください。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://stabucky.com/wp/archives/18093/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>LibreOffice Calcで正規表現で検索する関数</title>
		<link>https://stabucky.com/wp/archives/16256</link>
					<comments>https://stabucky.com/wp/archives/16256#respond</comments>
		
		<dc:creator><![CDATA[stabucky]]></dc:creator>
		<pubDate>Thu, 14 Dec 2023 12:14:09 +0000</pubDate>
				<category><![CDATA[LibreOffice]]></category>
		<category><![CDATA[Calc]]></category>
		<category><![CDATA[正規表現]]></category>
		<guid isPermaLink="false">https://stabucky.com/wp/?p=16256</guid>

					<description><![CDATA[LibreOffice Calcは正規表現で検索や置換ができます。 正規表現で検索する関数もあります。 次の関数を使うと正規表現に合致した部分の文字列を返します。 REGEX(対象文字列, 正規表現) 例えば次のようにす [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>LibreOffice Calcは正規表現で検索や置換ができます。<br />
正規表現で検索する関数もあります。<span id="more-16256"></span></p>
<p>次の関数を使うと正規表現に合致した部分の文字列を返します。</p>
<p>REGEX(対象文字列, 正規表現)</p>
<p>例えば次のようにすると合致した漢字を返します。<br />
=REGEX(A1,&#8221;[一-龠]&#8221;)</p>
<p>合致しない場合は#N/Aを返します。</p>
<p>次のようにすると正規表現に合致した部分を置換文字列に置換した文字列を返します。</p>
<p>REGEX(対象文字列, 正規表現, 置換文字列)</p>
]]></content:encoded>
					
					<wfw:commentRss>https://stabucky.com/wp/archives/16256/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>とにかく動かすPAD &#8211; 正規表現編</title>
		<link>https://stabucky.com/wp/archives/15885</link>
					<comments>https://stabucky.com/wp/archives/15885#respond</comments>
		
		<dc:creator><![CDATA[stabucky]]></dc:creator>
		<pubDate>Tue, 11 Jul 2023 00:42:36 +0000</pubDate>
				<category><![CDATA[マイクロソフト]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[PAD]]></category>
		<category><![CDATA[正規表現]]></category>
		<guid isPermaLink="false">https://stabucky.com/wp/?p=15885</guid>

					<description><![CDATA[Power Automate Desktop（PAD）は正規表現を使えます。 こうなると、もはやローコードとは言えませんが。 長い文章から特定の文字列を取り出したりするときに使えます。 目次 正規表現を使う方法JSONと [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Power Automate Desktop（PAD）は正規表現を使えます。<br />
こうなると、もはやローコードとは言えませんが。<br />
長い文章から特定の文字列を取り出したりするときに使えます。<span id="more-15885"></span></p>

  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-14" checked><label class="toc-title" for="toc-checkbox-14">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">正規表現を使う方法</a></li><li><a href="#toc2" tabindex="0">JSONとして処理する方法</a></li></ol>
    </div>
  </div>

<h2><span id="toc1">正規表現を使う方法</span></h2>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:400px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">◎変数の設定<br />
BaseStr={&quot;id&quot;:&quot;15&quot;,<br />
&quot;氏名&quot;:&quot;徳川慶喜&quot;,<br />
&quot;役職&quot;:&quot;将軍&quot;}<br />
<br />
◎テキストを置換する<br />
解析するテキスト=%BaseStr%<br />
検索するテキスト=[\s\S]*&quot;氏名&quot;:&quot;(.*?)&quot;[\s\S]*<br />
検索と置換に正規表現を使う=オン<br />
置き換え先のテキスト=$1<br />
生成された変数→Replaced<br />
<br />
◎メッセージを表示<br />
表示するメッセージ=%Replaced%</div></div>
<p>実行結果<br />
徳川慶喜</p>
<p>次のような文字列が与えられたとします。ここから氏名である徳川慶喜を取り出したいとします。<br />
{&#8220;id&#8221;:&#8221;15&#8243;,<br />
&#8220;氏名&#8221;:&#8221;徳川慶喜&#8221;,<br />
&#8220;役職&#8221;:&#8221;将軍&#8221;}<br />
ここでは「正規表現を使った置換」で対応します。<br />
Power Automateでは.Netと同じ正規表現が使えます。<br />
正規表現で括弧で挟んだ部分は$1で表すことができるので、置換先のテキストとして$1を指定するとそれ以外の個所が削除されて必要な部分だけを取得することができます。<br />
任意の文字列は.*で表せますが改行を含みません。改行を含む場合は[\w\W]*で表せます。</p>
<h2><span id="toc2">JSONとして処理する方法</span></h2>
<p>番外編になりますが与えられた文字列がJSON形式の場合はもっと簡単です。</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:400px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">◎変数の設定<br />
BaseStr={&quot;id&quot;:&quot;15&quot;,<br />
&quot;氏名&quot;:&quot;徳川慶喜&quot;,<br />
&quot;役職&quot;:&quot;将軍&quot;}<br />
<br />
◎JSONをカスタムオブジェクトに変換<br />
JSON=%BaseStr%<br />
生成された変数→JsonAsCustomObject<br />
<br />
◎メッセージを表示<br />
表示するメッセージ=%JsonAsCustomObject['氏名']%</div></div>
<p>元の文字列がJSON形式であったときしか使えませんが、JSONの場合はこんな方法があります。<br />
JSONをカスタムオブジェクトに変換を使うと簡単に辞書型配列として取り扱えます。<br />
あとはキーとして氏名を与えれば取得できます。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://stabucky.com/wp/archives/15885/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>正規表現で角括弧内でエスケープせずに使える特殊文字</title>
		<link>https://stabucky.com/wp/archives/14996</link>
					<comments>https://stabucky.com/wp/archives/14996#respond</comments>
		
		<dc:creator><![CDATA[stabucky]]></dc:creator>
		<pubDate>Mon, 30 May 2022 02:31:10 +0000</pubDate>
				<category><![CDATA[デジタル]]></category>
		<category><![CDATA[正規表現]]></category>
		<guid isPermaLink="false">https://stabucky.com/wp/?p=14996</guid>

					<description><![CDATA[正規表現の特殊文字は、文字そのものとして使う場合はエスケープする必要があります。 しかし文字の集合を指定する場合の角括弧内で使う場合はエスケープが不要となる場合があります。 .*?()[]^$&#124; について調べてみました。 [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>正規表現の特殊文字は、文字そのものとして使う場合はエスケープする必要があります。<br />
しかし文字の集合を指定する場合の角括弧内で使う場合はエスケープが不要となる場合があります。<br />
.*?()[]^$|<br />
について調べてみました。Python3.7で確認しました。<span id="more-14996"></span></p>
<p>.*?$|<br />
エスケープ不要です。</p>
<p>^<br />
エスケープ必要です。<br />
^には<br />
[^ｘ]<br />
と書くと否定の意味になるからです。</p>
<p>( )<br />
エスケープ不要です。<br />
ただし(についてはFutureWarningが発生します。</p>
<p>[ ]<br />
エスケープ不要です。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://stabucky.com/wp/archives/14996/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>エディタで特定の文字列を含む行だけ抽出する方法</title>
		<link>https://stabucky.com/wp/archives/11936</link>
					<comments>https://stabucky.com/wp/archives/11936#respond</comments>
		
		<dc:creator><![CDATA[stabucky]]></dc:creator>
		<pubDate>Wed, 09 Jan 2019 03:38:01 +0000</pubDate>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[正規表現]]></category>
		<guid isPermaLink="false">https://stabucky.com/wp/?p=11936</guid>

					<description><![CDATA[エディタで次のようにすると特定の文字列を含む行だけ抽出できます。 検索文字列を「^(?!.*aaaa).*\n」とする。※「aaaa」に特定の文字列をセットする。 置換文字列を「」(空欄)とする。 正規表現をオンにする。 [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>エディタで次のようにすると特定の文字列を含む行だけ抽出できます。</p>
<p>検索文字列を「^(?!.*aaaa).*\n」とする。※「aaaa」に特定の文字列をセットする。<br />
置換文字列を「」(空欄)とする。<br />
正規表現をオンにする。<br />
全てを置換する。</p>
<p>これにより「aaaa」を含まない行を全て削除します。各行の最後に改行(\ｎ)を指定しているので、改行を含めて削除されます。<br />
結果的に「aaaa」を含む行が残ります。<br />
CotEditorとVSCodeで試しました。正規表現の「否定先読み」に対応しているエディタならばOKだと思います。</p>
<p><a href="https://www.amazon.co.jp/exec/obidos/ASIN/4873113598/saigohaundesu-22"><img decoding="async" src="https://images-na.ssl-images-amazon.com/images/P/4873113598.09.LZZZZZZZ.jpg"></a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://stabucky.com/wp/archives/11936/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>UiPathのReplaceで正規表現を使う方法</title>
		<link>https://stabucky.com/wp/archives/11024</link>
					<comments>https://stabucky.com/wp/archives/11024#respond</comments>
		
		<dc:creator><![CDATA[stabucky]]></dc:creator>
		<pubDate>Wed, 20 Jun 2018 09:42:04 +0000</pubDate>
				<category><![CDATA[デジタル]]></category>
		<category><![CDATA[UiPath]]></category>
		<category><![CDATA[正規表現]]></category>
		<guid isPermaLink="false">http://stabucky.com/wp/?p=11024</guid>

					<description><![CDATA[UiPathは基本的にVB.Netの文法が使えます。 ReplaceアクティビティではVB.Netの正規表現が使えます。 目次 VB.Netの正規表現Replaceアクティビティ VB.Netの正規表現 VB.Netの正 [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>UiPathは基本的にVB.Netの文法が使えます。<br />
ReplaceアクティビティではVB.Netの正規表現が使えます。<span id="more-11024"></span></p>

  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-20" checked><label class="toc-title" for="toc-checkbox-20">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">VB.Netの正規表現</a></li><li><a href="#toc2" tabindex="0">Replaceアクティビティ</a></li></ol>
    </div>
  </div>

<h2><span id="toc1">VB.Netの正規表現</span></h2>
<p>VB.Netの正規表現については次のリンク先にあります。</p>

<a rel="noopener" href="https://msdn.microsoft.com/ja-jp/library/cc427946.aspx" title="正規表現の概説" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://learn.microsoft.com/en-us/media/open-graph-image.png" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">正規表現の概説</div><div class="blogcard-snippet external-blogcard-snippet"></div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://learn.microsoft.com/ja-jp/previous-versions/windows/scripting/cc427946(v=msdn.10)" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">learn.microsoft.com</div></div></div></div></a>
<p>使える記号については次のリンク先にあります。</p>

<a rel="noopener" href="https://msdn.microsoft.com/ja-jp/library/cc392020.aspx" title="正規表現の構文" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://learn.microsoft.com/en-us/media/open-graph-image.png" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">正規表現の構文</div><div class="blogcard-snippet external-blogcard-snippet"></div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://learn.microsoft.com/ja-jp/previous-versions/windows/scripting/cc392020(v=msdn.10)" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">learn.microsoft.com</div></div></div></div></a>
<p>「.」や「*」など正規表現でおなじみの記号が使えます。</p>
<p>正規表現オプション(いわゆるパターン修飾子)については次のリンク先にあります。</p>

<a rel="noopener" href="https://learn.microsoft.com/ja-jp/dotnet/standard/base-types/regular-expression-options" title="正規表現のオプション - .NET" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://learn.microsoft.com/dotnet/media/dot-net-cross-platform.png" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">正規表現のオプション - .NET</div><div class="blogcard-snippet external-blogcard-snippet">.NET で大文字と小文字を区別しない一致、複数行モード、右から左モードなどの正規表現オプションを使用する方法について説明します。</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://learn.microsoft.com/ja-jp/dotnet/standard/base-types/regular-expression-options" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">learn.microsoft.com</div></div></div></div></a>
<p>例えば「IgnoreCase」は大文字小文字の違いを無視します。</p>
<h2><span id="toc2">Replaceアクティビティ</span></h2>
<p>Replaceアクティビティを使うと文字列の置換を行えます。プロパティは次のようにします。</p>
<p>Inputには元の文字列を指定します。文字列や変数をセットします。<br />
Patternには正規表現パターンを指定します。文字列をセットします。<br />
RegexOptionには正規表現オプションを指定します。<br />
Replacementには置換後の文字列を指定します。<br />
Resultには元の文字列を置換した結果を代入する変数をセットします。</p>
<p>Replaceアクティビティは置換のために使いますが長い文字列から一部分だけを取り出すのにも使えます。</p>
<p>例えば複数行の文字列の中に「yournumber   75984264」というような文字列があり、「75984264」だけを取り出したいとします。</p>
<p>別の例として「xxxxx75984264xxxxx」という文字列から連続する数字だけを取り出すにはPatternに「\D+(\d+)\D+」をセットしReplacementには「$1」をセットします。<br />
「$1」は正規表現パターンの中の括弧に挟まれた部分を表します。括弧が複数あれば「$2」「$3」とします。<br />
「\D+」は数字以外を表すので前後の不要な部分はなくなります。結果的に括弧に挟まれた部分だけが残るというわけです。</p>
<p>元の例に戻ると、複数行の場合、前後の不要な部分を指定するのに、工夫が要ります。<br />
一つは「[\s\S]*」を使う方法です。「\s」がスペース(タブなどを含む)を表します。「\S」がスペース以外を表します。「[\s\S]*」とすると改行を含めたすべての文字列を表します。したがって「[\s\S]*yournumber\s+(\d+)[\s\S]*」とすれば「75984264」だけを取り出せます。<br />
もう一つは、正規表現オプションで「SingleLine」を使う方法です。これは改行を無視するような動作をします。つまり「.*」としても改行を含むすべての文字列を表します。したがって「.*yournumber\s+(\d+).*」とすればよいです。見た目がシンプルで分かりやすくなります。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://stabucky.com/wp/archives/11024/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
