タグ

regexpに関するwushiのブックマーク (19)

  • PCRE と PCRE2 | SIOS Tech. Lab

    こんにちは。サイオステクノロジー OSS サポート担当 山 です。 今回は正規表現を実装するために使用されるライブラリ PCRE についてのお話です。 PCRE は 2015年に新バージョン PCRE2 へと移行しており、元々の PCRE を使用していたソフトウェアでは近年のバージョンで PCRE から PCRE2 への移行を行なっているもの、行おうとしているものもあります。 此度はそのあたりを軸にざっくりとお話ししてみようと思います。 ■正規表現と PCRE について まず正規表現、そして PCRE についてざっくりとお話しておきます。 正規表現 (Regular Expression) は元々は学術的なものですが、 コンピュータの分野においては一定のルールを持つ記号を用いて書かれた主に検索などに用いられる文字列パターン、またはその文字列パターンを使って行うパターンマッチ・検索などを指

    PCRE と PCRE2 | SIOS Tech. Lab
    wushi
    wushi 2025/01/08
  • 正規表現サンプル集

    直前のパターンの0回以上繰り返し(最長一致) 例1)ABC* → AB、ABC、ABCCCCCC などにマッチ 例2)b.*k → bから始まってkで終わる2桁以上の文字列

    wushi
    wushi 2025/01/08
    (?! (?<! (?: あたりは知らなかったので知識のアップデートが必要
  • 正規表現を有限ステートマシンに変換 - Google 検索

    2023/05/19 · ここでは、正規表現をDFAに変換する考え方の概要を説明します。 ここで、DFAを拡張したNFA(非決定性有限オートマトン)という概念を導入します。DFA ...

    wushi
    wushi 2024/06/11
  • Step Functionsのステートマシンを利用した正規表現エンジンを作成する | DevelopersIO

    引用 : 正規表現エンジンを作ろう (3) 構文解析 構文解析処理では、字句解析処理で作成されたトークンをもとに構文的なチェックを行い、同時に構文木の作成を行います。 構文解析を行うにあたって、事前に正規表現の文法規則を整理しておく必要があります。ここではバッカス・ナウア記法(BNF)と呼ばれる記法を用いて、文法規則を記述します。この文法規則に従って正規表現を分解することで、正規表現として与えられた文字列が構文として正しいかどうかを確認することができます。 <expression> ::= <subexpr> <EOF> <subexpr> ::= <seq> "|" <subexpr> | <seq> <seq> ::= <subseq> | "" <subseq> ::= <star> <subseq> | <star> <star> ::= <factor> "*" | <facto

    Step Functionsのステートマシンを利用した正規表現エンジンを作成する | DevelopersIO
  • 正規表現とオートマトン

    正規表現とオートマトン 正規表現は、文字列のパターンマッチングを行うための汎用的な文法です。さまざまなプログラミング言語やコマンドラインツールなどで利用されています。 正規表現の理論的な背景として、オートマトンという概念があります。オートマトンは計算機科学の分野で研究されており、計算理論の教科書によく取り上げられています。ただ、いきなり教科書でオートマトンの説明を読んでも、わりと数学的な話で、プログラミングで扱っている正規表現のイメージとは少しギャップがあります。そこで記事では、簡単な正規表現のマッチング処理のコードを書いてみて、オートマトンの概念をつかんでみます。 なお、コードを記述するプログラミング言語はなんでもよいのですが、記事ではRustを使います。難しい文法は使わないので、Rustを知らなくても問題ありません。 正規表現のマッチング処理の素朴な実装 具体例として、正規表現 a

    正規表現とオートマトン
  • 正規表現の「否定」 - Qiita

    こんな困りごとを解決します 「京都」で検索! かぎ括弧の中身だけを正規表現 「.* 」 で抽出! 1. はじめに - 正規表現における2つの「否定」 「正規表現 否定」で検索してここへ来た方へ。 おそらくあなたが想定しているような「正規表現で否定を表すシンプルな表現」はないです。 でもご安心を。おそらくあなたがやろうとしている事は、正規表現を使ってできます!「正規表現 否定」という理解レベルから、一歩上を目指してみましょう。 この記事では正規表現における「否定」のうち、否定文字クラス と 否定後読み・否定先読み という機能を解説します1。 手っ取り早く使えるようになってもらうために、説明の後に例と練習問題を載せました。また、私含めた正規表現勉強中の方へ向け、基的な正規表現機能の説明を適宜加えました。一方である程度知っている方はサクサク読めるように、補足や細かい内容は折りたたみ部に入れまし

    正規表現の「否定」 - Qiita
    wushi
    wushi 2024/05/31
    文字列の否定(含まない)パターン、コマンドだとgrep -vでこと足りるんだけど、サクラエディタで合致しない行だけ置換、みたいなことをしたいときに役に立った
  • 先読みと後読みを使ったパターン

    正規表現ではパターンが対象の文字列とマッチするかどうかをチェックしますが、先読みや後読みでは文字列とマッチするかどうかは調べるけれどマッチした文字列としては取得しません。先読みと後読みでは利用方法に応じて、肯定先読み、否定先読み、肯定後読み、否定後読み、の 4 種類が利用できます。ここでは正規表現における先読みと後読みを使ったパターンの利用方法について解説します。

    先読みと後読みを使ったパターン
    wushi
    wushi 2024/05/31
    文字列の否定(含まない)パターン、コマンドだとgrep -vでこと足りるんだけど、サクラエディタで合致しない行だけ置換、みたいなことをしたいときに役に立った
  • 正規表現で文字列を含まない、否定の記述

    今回は、正規表現における否定条件の記述方法と否定先読みについて説明します。 否定的先読みとは ?! で始まる正規表現を括弧 () で括ることにより、指定した文字列を含まないという条件(否定的先読み)でマッチングを行うことができます。また、否定的先読みの前後に別のパターンをつなげて記述することも可能です。 否定的先読みを使用した例 下記の例では否定的先読み(?!~)の前後に文頭を示す ^ と文末を示す $ をつなげて行を検索するようにしています。 〜を含まない 「abc」という文字列を含まない行にマッチする。

    wushi
    wushi 2024/05/31
  • コマンドラインで URL デコードする一例 - ようへいの日々精進XP

    この記事は YAMAP エンジニア Advent Calendar 2020 の九日目になる予定です。 qiita.com tl;dr URL エンコードされた文字列を、コマンドラインでシュッとデコードしたかったので調べたのでメモ。 URL エンコードされる文字列は以下の通り。 負けない事 投げ出さない事 逃げ出さない事 これを URL エンコードすると、以下のような文字列となる。 %E8%B2%A0%E3%81%91%E3%81%AA%E3%81%84%E4%BA%8B%0D%0A%E6%8A%95%E3%81%92%E5%87%BA%E3%81%95%E3%81%AA%E3%81%84%E4%BA%8B%0D%0A%E9%80%83%E3%81%92%E5%87%BA%E3%81%95%E3%81%AA%E3%81%84%E4%BA%8B 記事で利用する環境は以下の通り。 root@

    コマンドラインで URL デコードする一例 - ようへいの日々精進XP
  • シェルスクリプトでファイルの途中から数バイト変数に読み込みたい

  • 改行コードの変換

    Unixの上でsed, awk, Python, Perl などを使ってファイルを行ごとに扱うためには、各行は LF という文字コード(\n)で区切られていないといけない。しかし、他のシステムで作られたファイルは異なる改行コードを用いているため、一旦unix用の改行コードに変換する必要がある。 1.改行コードの調べ方 1.A nkfを使う nkfを入れてあれば、Terminalから次のように打つだけ。 $ nkf -g foo.txt 1.B Octal dump 例えば、foo.txtというファイルを調べたければ、Terminalを開いて次のようにする。 $ od -c foo.txt | less 表示される文字の中に混じっている\n や\r\nを見つけ、下の表と比べる。 システム改行コードod -c での見え方

  • [コラム] 正規表現の先読み/後読みは、どう考えても名前が悪いので、呼称禁止令を出してルックと気軽に呼んでみませんか。 - Qiita

    正規表現の "先読み" / "後読み" を、分かりにくいと感じるすべての人にお送りします。 --- 追記:2017/06/04 コメントにて、ご指摘を頂いております。 当記事の解釈には誤りがあります。コメントのご指摘内容をご覧いただければ幸いです。 当記事の主旨としては、"先読み・後読み" よりも "ルックアヘッド" の方が、意味を捉えやすいのでは?というものでしたが.. そもそも私の、「lookahead」の解釈(とくに、look の主語はどれなのかという部分だと思います)に、勘違いがありました。 ですので、いまのところ当記事の主題は、「"先読み" でも、"ルックアヘッド” でも、どちらでもよいけど、しっかりと厳密に理解しよう!(反省)」となります。 コメント当にありがとうございました! --- 結論を先に書きます (?=a) のような正規表現は、一般的に「先読み」と呼ばれています。

    [コラム] 正規表現の先読み/後読みは、どう考えても名前が悪いので、呼称禁止令を出してルックと気軽に呼んでみませんか。 - Qiita
    wushi
    wushi 2017/06/06
  • 正規表現メモ (archive.org)

    お断り: PCREは、2007年10月10日時点で7.2までバージョンが上がっています。 色々追加されているものもあるのでこの情報は少々古いです。 内容に関しては最新バージョンに即して近々更新するつもりです。 PHP で使用できる正規表現演算子(mb_ereg) マルチバイト対応PHPには三種類の正規表現ルーチンがありますが、 ここではマルチバイト文字対応のmb_eregにしぼって列挙します。 Rubyの正規表現ルーチンを使っているので、Rubyのものと基的には同じです。 preg_*関数群はPCREを使っているので使える正規表現はPCRE に準じます。ereg_*で使える正規表現はPOSIX ERE と [[:<:]]、[[:>:]] のようです(Henry Spencer作のライブラリらしい)。 . * + ? ^ $ (regexp) \1 \2 \3 \4 \5 \6 \7 \8

    wushi
    wushi 2017/03/03
  • まだ正規表現で消耗してるの?

    PHPカンファレンス札幌 2016 LT Talk https://github.com/sizuhiko/hexpress http://blog.open.tokyo.jp/2015/09/21/hexpress-ported-from-ruby-world.html

    まだ正規表現で消耗してるの?
    wushi
    wushi 2016/04/17
    煽りよる
  • 番外編●特別コラム「[知っておきたい]正規表現にまつわる基本Q&A」[正規表現技術入門――最新エンジン実装と理論的背景(WEB+DB PRESS plusシリーズ)]|gihyo.jp … 技術評論社

    プログラミングの世界には実に多くの技術や方法論が溢(あふ)れていますが,その中でも「正規表現」はかなり特別な存在です。文字列のパターンを簡単な式で記述できる正規表現は,文字列処理をはじめ,さまざまな場面で活躍してくれるとても便利な道具です。プログラマの相棒となってから久しい正規表現ですが,多くの人々に知られている一方,正規表現に纏(まつ)わる疑問や間違った知識が多いのも事実です。 記事では,そんな正規表現に関するよくある疑問やあれこれに,2015年4月発売の『正規表現技術入門――最新エンジン実装と理論的背景』(新屋 良磨/鈴木 勇介/高田 謙著,技術評論社)の著者の一人がQ&A形式で答えます。 *(アスタリスク)は,「任意の文字列」(ワイルドカード)を表す正規表現? Q:正規表現って便利ですよね。 などなど,シェルでのファイル操作で重宝しています。 A:(!) A:はい,正規表現は便利で

    wushi
    wushi 2015/04/12
  • 正規表現を解析して可視化してくれるサイトが凄すぎる件

    ある正規表現に対して、特定の文字列がマッチするかどうかをチェックするツールやサイトは沢山ありますが、正規表現そのものが何を意味しているのか、どんな文字列を期待しているのかを解析・解読・説明してくれるツールやサイトってなかなか見ない気がします。 他人の書いた正規表現を見て、「ん?」ってなったことはありませんか? 例えばこれ。 1 ^[a-zA-Z0-9-_.]@([a-zA-Z0-9_-]+\.)+[a-zA-Z]{2,4}$ これくらいなら分かりますが、複雑になってくるとつらい… いつかはマスターしたいけど…今は楽したい。 そう思ってググってみると…ありました! それがこちら。 Regexper http://www.regexper.com/ 正規表現を入力して Display をクリックすると、その正規表現が表す内容を図にして表示してくれます。 例えば先程の正規表現は、当記事の一番上の

    正規表現を解析して可視化してくれるサイトが凄すぎる件
    wushi
    wushi 2014/10/19
  • 正規表現メモ

    \x{} \pは後続する名前が表すクラス(プロパティ、スクリプト、ブロック)に属する文字にマッチし、 \Pは後続する名前のクラスに属さない文字にマッチします。 クラスの名前が一文字のときはブレースを省略できます。 クラス名の前に^を置くことにより否定形の指定を行うことも可能です。 Perl 5.8 での変更点 Perl5.8以降(5.6でも使えたようですが)では \pや\Pで始まるプロパティ指定に標準Unicode属性を使うこともできます。 詳しくは perlunicode perlunicode - Perl における Unicode サポート を参照してください。 日語による説明が Unicodestandard にもあります。 Perl 5.8以降ではユーザーが任意のプロパティを作成することができます (IsまたはInを必ず前置)。 詳しくは perlunicode perluni

  • UNIXのsedチュートリアル10 | エンタープライズ | マイコミジャーナル

    Guides, HowTos and Tips for Technology Geeks - The Geek Stuff Sasikala氏がThe Geek StuffにおいてUnix Sed Tutorial: Find and Replace Text Inside a File Using RegExのタイトルのもと、sedコマンドで置換を実施する場合の使い方とその例題をまとめている。sedはテキストファイルから特定の行を表示したり削除、または特定の文字列を置換する用途で用いられる。特に文字列の置換をおこなうためのツールとして活用されることが多い。 sedは便利なツールだが、置換の指定方法はマニュアルを読むだけではわかりにくいところがある。実例を通して身につける方法がわかりやすい。Unix Sed Tutorial: Find and Replace Text Inside a

  • 正規表現エンジンを作ろう (3)

    正規表現は、特に文字列操作が中心となるWEB分野におけるプログラミングにおいて、なくてはならない重要な機能です。稿では正規表現を解釈するエンジンを実際に実装し、正規表現エンジンがどのように動いているのかを解説します。第3回は、実装するDFAエンジンが扱う文法を解釈するコンパイラを作成します。 はじめに こんにちは。hirataraです。 前回はDFAエンジンの仕様を明らかにし、DFAとNFAをPythonで実装しました。今回は、実装するDFAエンジンが扱う文法を解釈するコンパイラを作成します。 対象読者 正規表現をもっと知りたい方 情報科学分野に興味がある方 正規表現エンジンを実装する必要がある方 正規表現のコンパイル 前回、正規表現の仕様の中で正規表現の文法を定めました。これから、この文法を解釈できるコンパイラを作成します。コンパイラの仕事は、文字列を解釈して計算機が扱いやすいデータ方

    正規表現エンジンを作ろう (3)
  • 1