アップルスクリプト単体での文字操作はしづらいということで、
Perlを使用して文字置き換えを試みています。
ですが、正規表現"^ +"がうまく機能せず、
処理結果は、元の文字列のままになってしまいます。
たとえば、
●●●●●●●● ●●●●●●●● ●●●●●●●●●●●●●●●●●●●●●●●●●●●●● ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
で、2行目の行頭空白を削除したいということです。
###該当のソースコード
set aStr to regex_replace("/^ +//m", aStr) of doPerlKit on regex_replace(regex, target) set command to "$target = q/" & target & "/; $target =~ s" & regex & "; print $target;" --※引数を使用してperlコマンド生成 set str_result to exec_perl(command) of me return str_result end regex_replace on exec_perl(command) set one_liner to "perl -e '" & command & "'" as Unicode text --log {"one_liner =", one_liner} (*one_liner =, perl -e '$target = q/xxxx@ezweb.ne.jp/; $target =~ s/e/A/g; print $target;'*) --エラー処理 try set str_result to do shell script one_liner --※shell実行 --log {"str_result =", str_result} on error set str_result to "syntax error : " & one_liner --perlがエラーを吐いたとき end try return str_result end exec_perl
また、外部Perlを読み込む方法も試みています。
set aStr to do shell script "perl Perlファイルパス " & aStr
Perl
1#!/usr/bin/perl 2use Encode; 3use Encode::JP::H2Z; 4$decoded = $ARGV[0]; 5Encode::from_to($decoded, "utf-8", "euc-jp"); 6 7#問題の行 8$decoded =~ s/^ +//m; 9 10# 半角カナ→全角カナ <-- こちらは動作 11Encode::JP::H2Z::h2z(\$decoded); 12Encode::from_to($decoded, "euc-jp", "utf-8"); 13 14print "$decoded\n"; 15exit;
###試したこと
"\s"も試しましたが、こちらも失敗してしまいました。
###補足情報(言語/FW/ツール等のバージョンなど)
Mac OS X 10.9.5
AppleScript エディタ 2.6.1 (152.1)
AppleScript 2.3.2
perl 5.16.2 (Xcode 6.1 で記述)
何卒よろしくおねがいいたします。
回答2件
あなたの回答
tips
プレビュー