タグ

perlと正規表現に関するiwwのブックマーク (16)

  • grepの-oオプションと-Pオプションの組み合わせが便利 - Gre's Blog(跡地)

    $ paste <(cat score | grep -oP '[^\d]+') <(cat score | grep -oP '\d+') | xargs -n 2 #シェル芸— ぐれ (@grethlen) 2014, 6月 14 上記のようにgrepコマンドを叩いていたら「-oPってオプションなに?」と言われたので。 grep -oPって? -oオプションとは --only-matchingの略。マッチした部分のみを抽出するというオプションのこと。 $ echo "123abc456dfg" | grep -o [a-z] a b c d f g -Pオプションとは マッチさせる文字列にPerlで使われているものと同じ正規表現(Perl正規表現)をつかえるようにする。PerlのP。 普通の正規表現とPerl正規表現の違いって? 主に以下の3つ。 一部のメタ文字が使える [参考] \d

    grepの-oオプションと-Pオプションの組み合わせが便利 - Gre's Blog(跡地)
  • Perlの正規表現をマスターしよう - Perlゼミ|Perlの基礎をインストールからサンプルで丁寧に解説

    Perlの正規表現の解説です。この記事を読めば、日常で利用する正規表現のすべてを短時間でマスターすることができます。正規表現を使えば、文字列の集合を表現することができ、正規表現にマッチする文字列を検索したり、置換したりすることができます。 正規表現を使って文字列の集合を表現できます。たとえば「a」「aa」「aaa」という三つの文字列を正規表現で表現してみましょう。連続する文字の個数を表現する正規表現「{}」を使って次のように書くことができます。 a{1,3} 「a」「aa」「aaa」という文字列の集合をひとつの正規表現「a{1,3}」で表しています。{}は量指定子と呼ばれるもので、連続した文字を表現することができます。 a aa -> a{1,3} aaa 正規表現の例をもう一つみてみましょう。「p1」「q1」「r1」という文字列の集合をひとつの正規表現「[pqr]1」で表すことができます

    Perlの正規表現をマスターしよう - Perlゼミ|Perlの基礎をインストールからサンプルで丁寧に解説
  • Perl の正規表現でマッチした文字列自体を取得する今昔 - Qiita

    バージョンごとの表の絵文字は以下の意味です 使用可能 使用可能だが致命的な性能劣化を招くため忌避される (空欄) 対応前バージョン Perl 5.20 以降なら $& による方法が一番簡単ですが、それ以前のバージョンでの経緯を知っているチームメンバーから拒絶反応を受ける可能性もあります。そのプログラムが今後 Perl 5.20 より前のバージョンで実行する必要が一切ないと言えるなら $& でも問題ないと思いますが、外部公開するモジュールなどの場合は use v5.20 等で明言しないのであれば $& の使用は避けておくべきでしょう。 それぞれの手法 マッチ全体をキャプチャのカッコでくくって $1 で参照する方法 今も伝統的に行われている、マッチ全体をキャプチャのカッコでくくる方法です。 # $body から a か A で始まる単語を取り出して $match に入れる # \b は単語境界

    Perl の正規表現でマッチした文字列自体を取得する今昔 - Qiita
    iww
    iww 2020/11/09
    『Perl 5.20 ではこの問題が完全に解決され、$& などを使うことによる性能低下問題はなくなりました。』 そうだったのか
  • 第7章 正規表現

    正規表現とは、ある特定の文字列ではなく、文字列の一部をパターン化して表現する手法をいいます。 複数行ある文章の中から文字列を検索する時に、検索したい文字列すべてを指定するのではなく、文字列の任意の一部を置き換え可能な状態にして検索をする場合に正規表現を用います。 たとえば、UNIXやWindowsでは、文字列を検索するときに使用される正規表現として、「*」を任意の文字列(空き文字も含む)に、「?」を任意の1文字として使用することができます。パターンを、app* と表現すると、 apple application appeal などの文字列がマッチすることになります。 この正規表現の方法は、当然ながらプログラム言語ごとに異なりますが、Perlの場合は他の言語に比べて非常に強力な正規表現によるパターンマッチ機能を備えており、より詳細にかつ容易にパターンマッチを行うことができるとされています。

  • 正規表現サンプル(エスケープが必要な文字)

    正規表現では特別な意味を持つ文字がいくつかあり、そのまま記述すると意味のある指定と解釈されます。 これらの文字を、通常の文字列として認識させる場合は、エスケープしてください。 (エスケープとは、\ マークをつけて特殊動作を無効にさせること。)

  • サービス終了のお知らせ

    サービス終了のお知らせ いつもYahoo! JAPANのサービスをご利用いただき誠にありがとうございます。 お客様がアクセスされたサービスは日までにサービスを終了いたしました。 今後ともYahoo! JAPANのサービスをご愛顧くださいますよう、よろしくお願いいたします。

  • perl で正規表現にマッチした文字列を配列に入れる方法 | perl/CGI | 阿部辰也のブログ――人生はひまつぶし。

    ある文字列から、正規表現にマッチした文字列のリストを、配列に入れる方法です。 意外と最近までこれ知らなかったです。 #-- 文字列 $string = '0a12bc345def6789ghij'; #-- 数字だけを抽出して配列に入れる @nums = $string =~ /[0-9]+/g; #-- 配列に入った値を出力 foreach $num (@nums){ print $num."\n"; } 上記の出力結果は、 0 12 345 6789 となるはずです。 Twitter始めました。Followはお気軽にどうぞ。 関連するブログ記事 perl / PHP / JavaScript 各言語での URL(URI)エンコード・デコード方法まとめ [2009年12月 2日 18:47] perlCGI や PHP でフォーム入力チェックによく使う正規表現のまとめ [2009年

  • 正規表現

    演算子やらメタ文字やら色々覚えなきゃいけない事が多い正規表現の解説。 文字クラス - 範囲 ^ 先頭に置くとそれ以外にマッチ /[01234567]/ 0~7 までの数字 1 文字にマッチ /[0-9\-]/ 数字 1 文字かマイナス文字 1 文字にマッチ /[^0-9]/ 数字以外の 1 文字にマッチ /[a-zA-Z]/ 英字 1 文字にマッチ /[0-9]+/ 1 文字以上の数字にマッチ メタ文字 . 改行を除く任意の 1 文字 * 0 回以上のパターンの繰り返し + 1 回以上のパターンの繰り返し ? 0 または 1 回のパターン ^ 行の先頭 $ 行の終端又は行末の改行の直前 \ 直後のメタ文字をクォート | パターン論理和 () グループ化 [] 文字クラス {} 量指定子 \t タブ \n 改行 \r リターン \f 改ページ \e エスケープ \l 直後の文字を小文字にする

  • perlreref

    名前 説明 演算子 構文 エスケープシーケンス キャラクタクラス アンカー 量指定子 拡張構造(EXTENDED CONSTRUCTS) 変数 関数 用語 Titlecase AUTHOR SEE ALSO THANKS 名前 perlreref - Perl の正規表現のリファレンス 説明 ドキュメントは、Perl の正規表現のクイックリファレンスです。 完全な情報は、perlre と perlop、また、ドキュメントの ”SEE ALSO セクションを参照してください。 演算子 =~ 正規表現が適用される変数を決定します。省略された 場合には、$_ が使われます。 $var =~ /foo/; !~ 正規表現が適用される変数を決定し、マッチの結果を反転します。 マッチが成功すれば偽を返し、失敗すれば真を返します。 $var !~ /foo/; m/pattern/igmsoxc パ

  • 404 Blog Not Found:perl - 勝手に添削 - 40行で作るPerl用テンプレートエンジン

    2007年10月30日20:00 カテゴリLightweight Languages perl - 勝手に添削 - 40行で作るPerl用テンプレートエンジン 久々の勝手に添削。今回はこちら。 40行で作るPerl用テンプレートエンジン 正規表現がらみなので、Perl以外でも有用。 添削箇所は、こちら。 40行で作るPerl用テンプレートエンジン sub convert { return unless defined(my $str = shift); $str =~ s{&amp;}{&amp;}gso; $str =~ s{<}{&lt;}gso; $str =~ s{>}{&gt;}gso; $str =~ s{\"}{&quot;}gso; $str; } これの最初のsubstitutionが&amp;ではなくて&ではないかというのはさておき、こういった場合、何度も正規表現をかけ

    404 Blog Not Found:perl - 勝手に添削 - 40行で作るPerl用テンプレートエンジン
  • メールアドレスの正規表現

    更新日 2019/5/3 戻る Perlメモへ - メールアドレスの正規表現へ Perl正規表現雑技へ 更新履歴 2019/05/03 「制御文字を除去する」「参考文献」RFC5321日語訳のリンク修正 2009/08/13 $atextのバグ修正 2009/05/06 「正規表現を簡略化する」追記 2009/04/29 「旧形式を削除する」追記 2009/04/13 「IPアドレスを除去する」追記 目次 RFCに準拠したメールアドレスの正規表現 コメントと空白文字を除去する 制御文字を除去する IPアドレスを除去する 旧形式を除去する 正規表現を簡略化する 参考文献 RFCに準拠したメールアドレスの正規表現 メールアドレスについては RFC 5322 に addr-spec として書かれています. 下記は RFC 5322 に従って導き出した正規表現です. 14,277バイトあります.

  • PerlでTrimする! - 小池啓仁 ヒロヒト応援ブログ By はてな

    VB系では、文字列の両端にあるスペースを削除するに有名なTrimがあります。 しかし、Perlでは、残念ながらTrimはありませんが、以下の正規表現で一発です。 $string =~ s/^\s*(.*?)\s*$/$1/; ちょっと解説です。 まずは、\sは、文字クラス[ \t\n\r\f](左端にスペース含む)と同義です。 始めに、文字列の先頭から\sの0回の連続にマッチさせる。 つぎに、任意1文字の0回の連続に最小マッチさせて、これを$1に記憶する。 そして、\sの0回の連続を後尾までマッチさせる。 最後に、文字列全体を$1で置換する。 以下のように、2回に分ければ、両端でも片方のみでも大丈夫です。 $string =~ s/^\s+//; $string =~ s/\s+$//; 追記:上記は、半角系のスペース文字に対するTrimです。全角系のスペースを考慮に入れると以下が参考にな

    PerlでTrimする! - 小池啓仁 ヒロヒト応援ブログ By はてな
  • とほほのperl入門 ◆ 正規表現

    ラリー・ウォール氏によって1987年に開発されたスクリプト言語です。 C言語、AWK、sed, sh などの影響を受けて開発され、PHP, Ruby, Python などに影響を与えました。 聖書の中の「高度な真珠」にちなんで pearl と名付けられる予定でしたが、同盟の言語がすでに存在したため Perl と名づけられました。 現在では Perl は "Practical Extraction and Report Language" の略とされています。 プログラミング言語を示すときは先頭大文字で「Perl」、処理系を表すときは先頭小文字で「perl」と表します。 2023年9月現在、5.38 が最新版です。 RHEL7系では 5.16、RHEL8系では 5.26、RHEL9系では 5.32、Ubuntu 22.04では 5.34 がインストールされます。 Windows用の実装として

  • 正規表現機能別逆引きリファレンス

    正規表現機能別逆引きリファレンス GNU grep (2.5.1) GNU egrep (2.5.1) Ruby/鬼車 (5.9.1) Perl (5.8) 秀丸 (HmJre.dll 1.92) Vim (7.1) boost::regex (1.36.0) 任意の1文字 . . . . . . . \C いずれか1文字 […] […] […] […] […] […] […] いずれか以外の1文字 [^…] [^…] [^…] [^…] [^…] [^…] [^…] エスケープ \ \ \ \ \ \ \ 選択 r1\|r2 r1|r2 r1|r2 r1|r2 r1\|r2 r1|r2 r1\|r2 一回または零回(欲張り) ? ? ? ? ? \= ? 零回以上(欲張り) * * * * * * * 一回以上(欲張り) \+ + + + + \+ + n回以上m回以下(欲張り) \{n

  • 秀丸とperl等の正規表現のメタキャラクタ比較表 - 逆引き秀丸の正規表現で置換サンプル集 - DEARIE

    パソコンのちょっと便利な使い方

  • Perlメモ

    複数のプロセスでロック状態が異常であると判断し,そのうちの 1つがロックを解除したことにより,別のプロセスがロックしたにもか かわらず,先ほどロック状態が異常であると判断したプロセスによってこの正常なロッ クを解除されてしまう可能性があります. この方法の問題点は,異常なロック状態を解除する操作が正常なロック状態をも 解除できてしまうことにあります.逆に言えば,異常なロック状態を解除する操作に よって正常なロック状態を解除できなければ問題ないわけです.そのためにはどうす ればよいのか? 答えはロック状態が常に変化していけば よいということです.そして,これを実現するのに都合がよいのが rename による方法になります. 最初のスクリプトで説明しますと,ロックファイルが lockfile という 名前のときがロックが解除されている状態で,lockfile987654321 のよう に後ろに

  • 1