多機能リネームソフト - Shupapan

 

Support

正規表現の使い方について

Shupapan では、正規表現を使う事により、特定のファイルや文字列のみを処理する事ができるようになります。リネーム処理「指定文字列の検索・置換」、「大文字←→小文字変換」、「半角英数字←→全角英数字変換」、「ファイルフィルタ」などでサポートしています。

正規表現の使い方については、インターネット上で解説されているサイトが多くありますので、そちらも併せてご覧ください。

書式一覧

正規表現を利用できる機能で使える正規表現の書式の一覧です。以下の書式の組み合わせにより柔軟な文字列の検索を行う事ができます。

書式 処理 例、備考
\ 直後のメタキャラクタ (制御文字)を通常の文字として扱う
  • 「 \* 」:文字 *
  • 「 \+ 」:文字 +
  • 「 \. 」:文字 .
直後の通常の文字をメタキャラクタ (制御文字)として扱う 「 \t 」:タブ
^ 文字列の始めと一致 For example:「 ^(img) 」=「 img 」から始まる文字列と一致
否定処理 For example:「 [^abc] 」=「 abc 」以外の任意の1文字と一致
「 [ 」の直後に「 ^ 」を入れる必要があります。
$ 文字列の終わりと一致 For example:「 (img)$ 」=「 img 」で終わる文字列と一致
* 直前の文字と0文字以上一致 For example:「 6* 」=「 66 」でも「 666666 」でも一致
+ 直前の文字と1文字以上一致

上記参照。

「 * 」との違いは0個以上か1個以上の違いです
. 改行以外のすべての単文字と一致 For example:「 .+ 」=1文字以上のすべての文字と一致
? 直前の文字と0文字または1文字一致  
| 「 | 」で区切られた文字列のどちらかと一致 For example:「 a|b|c 」=「 a 」、「 b 」、「 c 」の内どれか1つと一致
{x} 直前の文字とx文字一致 For example:「 a{5} 」=「aaaaa」と一致
{x,} 直前の文字とx文字、またはそれ以上一致 For example:「 a{3,} 」=「aaa」、「aaaaaaa」などと一致(「a」が3文字以上)
{x,y} 直前の文字とx文字以上、y文字以下で一致 For example:「 a{3,5} 」=「aaa」、「aaaa」などと一致(「a」が3文字以上、5文字未満)
[ ] 「 [ ] 」内の1文字と一致
  • 「 [0-9] 」:数字と一致
  • 「 [a-zA-Z0-9_] 」:英数字と一致
[^ ] 「 [^ ] 」内に含まれていない任意の1文字と一致
  • 「 [^0-9] 」:数字以外と一致
  • 「 [^A-Z] 」:大文字アルファベット以外と一致
() 「 ( ) 」内の文字列を一つのグループとして取り扱う。
  • 文字列単位でメタキャラクタによる処理を行う場合に使用します。
  • For example:「 (mac)?(win) 」=「macwin」または「win」と一致
\b 単語の境界と一致  
\B 単語の境界以外の部分と一致  
\d 数字と一致 [0-9]と同じ
\D 数字以外の文字と一致 [^0-9]と同じ
\s スペース、タブ、改行などの空白文字と一致  
\S スペース、タブ、改行などの空白文字以外と一致  
\t タブ文字と一致
Shupapan では使用しません。
\w 英数字と一致 [a-zA-Z0-9_]と同じ
\W 英数字以外の文字と一致 [^a-zA-Z0-9_]と同じ
\0 NULL文字と一致
Shupapan では使用しません。
\***
(*は数字)
***に入力した10進数(000〜255)のASCIIコードの文字と一致  
\x**
(*は16進数)
**に入力した16進数(00〜FF)のASCIIコードの文字と一致  
(?:text) For grouping without creating backreferences  
(?=text) A zero-width positive look-ahead assertion For example:\w+(?=\t) matches a word followed by a tab, without including the tab in $&.
(?!text) A zero-width negative look-ahead assertion For example:foo(?!bar)/matches any occurrence of "foo" that isn't followed by "bar".
(?<=text) A zero-width positive look-behind assertion For example:(?<=\t)\w+ matches a word that follows a tab, without including the tab in $&. Works only for fixed-width look-behind.
(?<!text) A zero-width negative look-behind assertion For example:(?<!bar)foo matches any occurrence of "foo" that does not follow "bar". Works only for fixed-width look-behind.
Greediness オプション

最初の区切り文字と最後の区切り文字、その間に含まれる全ての文字を検索するようになります。
この機能は Greediness オプションのチェックボックスにチェックを入れるか、書式の最後に「?」を付ける事で有効になります。

使用例
文字列 検索文字列 置換文字列 Greediness オプション 結果 補足
<a>00<a>11<a>22<a>33<a> <a>.+<a> xxxx 有効 xxxx 「<a>00<a>11<a>22<a>33<a>」と一致するため、結果は「xxxx」になります。
無効 xxxx11xxxx33<a>

「<a>00<a>」と「<a>22<a>」と一致するため、結果は「xxxx11xxxx33<a>」になります。

置換処理の仕様上、該当文字列を検出した時点で置換処理を実行するため、オプションが無効の場合、「<a>11<a>」や「<a>33<a>」とは一致しません。
備考、補足
  • 正規表現の一部の書式で、「?」(直前の文字と0個、または1個一致)、「*」(直前の文字と0個以上一致)、{0,x}(直前の文字と0個以上x個以下で一致)が機能しない事があるようです。
    この場合、「Greediness」オプションを有効にするか、書式の最後に「?」を付ける事で回避する事ができます。(例:「A{4}\s*」 -> 「A{4}\s*?」)
  • 正規表現に関する仕様や不具合については、「現在までに報告されている不具合の一覧と対応状況」をご覧ください。
関連リンク