変数操作などを行う際の「パターン」で使用する正規表現

フォローする

正規表現(パターンマッチング)とは、文字列の特徴を「行頭の2文字」「cから始まる英単語」「3桁の数字」というようにパターン化し、特殊記号を使用して表現するものです。

 

パターン化することで、検索や置換を行う際に多少の違いがある文字列もまとめて指定することができます。

 

▼<例>パターンエディターにて「シンボル」ボタンから選択できる正規表現の特殊記号
31032_1.png

 

■基本の特殊記号

下記は正規表現で使用する基本的な特殊記号の解説と一致する文字(一文字)の例です。

 特殊記号 

解説

 一致する文字(一文字)の例 

.(ドット)

 改行( \n )以外の任意の文字。 

 a,  1,  /,  ?,  . 

\d 

 任意の十進数の数字。 

 0, 1, 2, … 9 

\D

 数字以外の任意の文字。 

 a,  /,  ?,  . 

\s

 任意の空白文字。 

 空白, タブ, キャリッジリターン 

\S

 空白以外の任意の文字。 

 a,  1,  /,  ?,  . 

\w

 任意の英数文字とアンダーバー。 

 a, … z,  A, … Z,  0, … 9, _ 

\W

 英数文字とアンダーバー以外の任意の文字。 

 /, ?,  . 

\n

 改行文字。 

 改行 

\r

 行頭復帰文字。 

 キャリッジリターン 

\t

 タブ文字。 

 タブ 

 

“.”または”\”のような特殊文字を通常の文字として使用したい場合は、その文字の前に”\”(バックスラッシュ)を追加することで可能です。

<例>

・”.”をピリオドとして使用したい場合 → \.

・”\”をバックスラッシュとして使用したい場合 → \\

 

■繰り返しの特殊記号

下記は繰り返しに一致する特殊記号です。

 特殊記号 

解説

*

 直前の文字の0回以上の繰り返し。 

+

 直前の文字の1回以上の繰り返し。 

{n} 

 直前の文字のn回の繰り返し。 

{n,} 

 直前の文字のn回以上の繰り返し。 

{m,n}

 直前の文字の m 回以上,n 回以下の繰り返し。 

?

 直前の文字の0回または1回の繰り返し。 

 

特殊記号を組み合わせることで様々なパターンを指定することができます。

特に、基本の特殊記号の” . ”と繰り返しの特殊記号の” * ”を組み合わせた” .* ”は頻繁に使用されるパターンなので覚えておきましょう。

 パターン 

解説

一致する文字列の例

 .* 

 任意のテキスト。 

 Design Studio, 1213, 「」(空のテキスト)  


■サブパターン

()を使用することでパターンをサブパターンの集合として整理することができます。

 正規表現 

解説

 (abc)* 

 任意のテキスト”abc”の0回以上の繰り返しと一致する。「」(空のテキスト), abc, 
 abcabc, abcabcabcなど。

 (.*)(.*) 

 一致するテキストが「abc」の場合、最初のサブパターンが「abc」に該当し、第二 
 のサブパターンが「」(空のテキスト)に該当する。


■最短一致(特殊動作)

「最短一致」とは、本来「直前の文字の0回または1回に一致」の意味の”?”を、特定の位置で記述することによって最も短い文字列のみを指定する記述方法です。

 

「.*」と記述した場合、正規表現では原則最長一致で処理されます。

たとえば、<p>abc</p>という文字列の最初のpタグ( <p> )のみとマッチしたい場合に<.*>

と記述すると、”<” と ”>” の間にあるテキストが最も長い文字列がマッチするため、 </p> の”>”直前まで(”p>abc</p”)が「.*」に該当したと判定されます。

このため、<.*>という記述では<p>abc</p>という文字列全体がマッチしてしまいます。

 

これを防ぐためには、下記のように ”>” の前に ”?” (最短一致記号)をつけます。

<.*?>

上記の正規表現では、”<” と ”>” の間にあるテキストが最も短い文字列がマッチするため、<p>タグのみがマッチします。

 

下記は最短一致記号を使用した正規表現の例です。

 パターン 

解説

*?

 先行するサブパターンまたは空のテキストの任意の数での繰り返しに一致。{0,}?の 
 省略形。できるだけ少ないサブパターンと一致する。 

+?

 先行するサブパターンの1回以上の繰り返しに一致。{1,}?の省略形。できるだけ少な 
 いサブパターンと一致する。

{m,n}?

 m回からn回までの先行するサブパターンの繰り返しに一致。できるだけ少ないサブパ 
 ターンに一致する。

{m,}?

 m回またはそれ以上の先行するサブパターンの繰り返しに一致。できるだけ少ないサブ 
 パターンと一致する。

(.*?)(.*)

 一致するテキストが「abc」の場合、最初のサブパターン(.*?)は任意のテキストの0回 
 以上の繰り返しのうち、できるだけ少ない繰り返しと一致するため「」(空のテキスト)に 
 該当し、第二のサブパターンが「abc」に該当する。

(.+?)(.*)

 一致するテキストが「abc」の場合、最初のサブパターン(.*?)は任意の文字の1回以上の 
 繰り返しのうちできるだけ少ない繰り返しと一致するため「a」に該当し、第二のサブパ 
 ターンが「bc」に該当する。

 

■セット

複数の文字のうち一文字とのみ照合させたい場合、”[]” (ブラケット) を使用して複数の文字をセットでパターンに記述することができます。

 パターン 

解説

 一致する文字列の例 

[abc] 

 a か bか c のいずれか 1文字に一致 。 

a, b, c

[^ abc]

 a と bと c 以外の任意の1文字。 

d,  1,  /,  ?,  .

[a-z]

 aからzの範囲内の任意の1文字。 

a, b, c, … z


下記は応用的な正規表現の一例です。

パターン

解説

一致する文字列の例

 .an 

 「an」で終わる3文字のテキスト。

can, man

  [a-dkx-z]  

 a から d、k、x から z のいずれか1文字に一致。

 a, b, c, d, k, x, y, z 

 \w*\d 

 一致する文字列が右の例の「abc1abc1」の場合、
 \w*は任意の英数文字の0回以上の繰り返しを表すため
 「abc1abc」に、\dは任意の十進数の数字のため「1」
 に該当する。

abc1abc1, ab2, 0

 \w*?\d 

 検索対象の文字列中に「abc1abc1」があった場合、
 「abc1」の部分に一致する。任意の英数文字の0回以
 上の繰り返しで始まり、数字で終わる最も短いパター
 ンの文字列が該当する。

abc1, ab2, 0

 \d\d\s\d\d 

 2 桁の数字で始まり、空白と2桁の数字で終わる5文字
 のテキスト。

01 23, 72 13

 a\.b\\c 

 “.”と”\”は直前に”\”(バックスラッシュ)がついている
 ので通常の文字として機能する。

a.b\c

 (¥d¥d){1,2} 

 2つまたは4つの数字のいずれかに一致する。

12, 0357

 (good)?bye 

 「good」の0回以上の繰り返しで始まり「bye」で終わ 
 る文字列と一致。

goodbye, bye

 ([bn]a){3,3} 

 “b” か “n” の後に “a” が続いて、これが 3 回繰り返され 
 る文字列と一致。

 banana, babana, nanana 


より応用的な正規表現を用いたパターンの記述方法についてはDSにてパターンで文字を抽出する方法を参照してください。



注意事項

・\nや\rなどの改行文字はDS、DA、Chromiumで仕様が異なります。

 DS:「\r\n」「\r」「\n」が使用可能
 DA:「\r」「\n」が使用可能 ※「\r\n」も可能だが、2回改行される
 Chromium:「\r\n」「\r」が使用可能


参考

※ご利用にはBizRobo! PORTALのアカウントが必要です。詳しくはこちらを参照してください。

BizRobo!ポータル > ラーニング > e-Learningサイト > コースライブラリ > ②Design Studio(DS) > ロボット作成で重要な点を詳しく学ぼう > パターン(Pattern)の使い方 

3人中3人がこの記事が役に立ったと言っています

コメント

0件のコメント

ログインしてコメントを残してください。