別に正規表現でなくても良いのだが、文字列から記号を削除したい場合に、どのようなアプローチがあるのか、検討してみた。
便利そうなUnicodeのブロックを使ってみる
¥p{Latin}で数字となるが、
ローマ数字なども含んでいるので使えない
sub nomalize {
my $str = shift;
$str =~ s/[^0-90-9a-zA-Za-zA-Z\p{Han}\p{Katakana}\p{Hiragana}]//g;
return $str;
}
動的正規表現を使って入れ子の対にマッチさせる
perlコードを動的正規表現は(??{Perlコード})で記述する
my $regx;
$regx = qr/ (?> [^()]+ | \( (??{ $regx }) \) )* /x;
if ($str =~ m/\b\w+ ( \( $regx \) ) /x) {
print "$str\t--> found ptn2 : $1\n";
}
ちなみに、perlの組み込みコードは(?{Perlコード})で記述
my $regx;
$regx = qr/ (?> [^()]+ | \( (??{ $regx }) \) )* /x;
if ($str =~ m/\b\w+ ( \( $regx \) ) /x) {
print "$str\t--> found ptn2 : $1\n";
}
ちなみに、perlの組み込みコードは(?{Perlコード})で記述
/gオプション
1.すべてのマッチ抜き出し
my $text = '123.456.789.101';
my @nums = $text =~ m/\d+/g;
print $_, "\n" for @nums;
----
123
456
789
101
2.反復的なマッチ
my $text = '123.456.789.101';
$text =~ m/(\d+)/g;
print "1 -> $1\n";
$text =~ m/(\d+)/g;
print "2 -> $1\n";
$text =~ m/(\d+)/g;
print "3 -> $1\n";
$text =~ m/(\d+)/g;
print "4 -> $1\n";
----
1 -> 123
2 -> 456
3 -> 789
4 -> 101
while でも同じ
my $text = '123.456.789.101';
while ($text =~ m/(\d+)/g) {
print "found : $1\n";
}
----
found : 123
found : 456
found : 789
found : 101
my $text = '123.456.789.101';
my @nums = $text =~ m/\d+/g;
print $_, "\n" for @nums;
----
123
456
789
101
2.反復的なマッチ
my $text = '123.456.789.101';
$text =~ m/(\d+)/g;
print "1 -> $1\n";
$text =~ m/(\d+)/g;
print "2 -> $1\n";
$text =~ m/(\d+)/g;
print "3 -> $1\n";
$text =~ m/(\d+)/g;
print "4 -> $1\n";
----
1 -> 123
2 -> 456
3 -> 789
4 -> 101
while でも同じ
my $text = '123.456.789.101';
while ($text =~ m/(\d+)/g) {
print "found : $1\n";
}
----
found : 123
found : 456
found : 789
found : 101
登録:
投稿 (Atom)
ReactNativeでAndroid対応する話
前提 ReactNativeでiOS版のアプリをリリースしていて、Android版をリリースする話 トラブルシューティング Build.VERSION_CODES.Q が存在しないエラー compileSdkVersionを29以上にすると解決 メモリー足りないエラー Execu...
-
公式のドキュメント https://docs.mitmproxy.org/stable/ # install ## mac ``` $ brew install mitmproxy ``` ## iPhone ### 証明書 セキュアな通信を傍受するために、プロファイ...
-
ナビゲーションコントローラを滑らかに遷移させる ナビゲーションコントローラの画面遷移をカスタマイズする 主要なクラス UIViewControllerAnimatedTransitioning 具体的なアニメーションを定義するクラス。実行時間やviewの動きな...
-
前提 ReactNativeでiOS版のアプリをリリースしていて、Android版をリリースする話 トラブルシューティング Build.VERSION_CODES.Q が存在しないエラー compileSdkVersionを29以上にすると解決 メモリー足りないエラー Execu...