これまでにRuby on Rails チュートリアル第2版の監修および半分程度を翻訳、Railsガイドの初期翻訳ではほぼすべてを翻訳。その後も折に触れて更新翻訳中。 ‘hiragana_fwkatakana’ – 全角ひらがなのみを全角カタカナに変換します。 仕事に関係ないすっとこブログ「あけてくれ」は2000年頃から多少の中断をはさんで継続、現在はnote.muに移転。, http://www.unicode.org/Public/UNIDATA/Scripts.txt, http://www.unicode.org/Public/UCD/latest/ucd/Blocks.txt. 何ということでしょう。こちらも長音がKatakanaに含まれていません。, これを回避するには、[\p{Katakana}ー]のように文字クラスに長音をじかに追加してください。Katakanaでスッキリといかないのが残念ですが、バグが修正されるまでの辛抱です。, と偉そうに書いてますがこれに気付いたのはついさっきです。文字プロパティは正規表現ごとに実装がかなり異なっているので、皆様もPerlやPythonやPHPなどでこの辺りをチェックして青ざめてみたりプルリクしたり月に向かって吠えたりしてください。, このバグがこれまで発覚せずにここまで来てしまったのも、文字プロパティを使う人が少ないからです。それにしても、こうした文字プロパティを使う人が少なすぎます。もっとじゃんじゃん使ってください。叩けば他にもホコリが出るかもしれません。 かと思うと、正規表現の粋を尽くした日本語エラーチェックサービス enno.jpを運営。 正規表現で特定の1文字を表すには「文字クラス」を利用するのが便利なのでした。文字クラスでは、文字コード上の範囲を明示することができますので、半角英字(アルファベット)を範囲で指定できます。, 記号も同様です。文字のASCII文字コードなどは、一般的なプログラミングでは、普段意識することは少ないと思います、ASCIIコード表を参照するようにします。, 上記のリンクから、ASCIIコード上、「半角スペース(32)」で開始し、「スラッシュ(46)」で終わる記号群と、「コロン(58)」で始まり。「@(64)」で終わる記号の範囲があるようです。また、終盤に、「[ (123)」や、「 ~ (126)」もあります。これをそのまま記述しましょう。, マッチさせたい記号は何なのか、予め ASCIIコード表で確認しておく必要があるね。, ASCIIコード表を見えるとわかりますが、半角スペースから、チルダ(~)まで、半角英数字と記号が定義された範囲になります。半角スペースは、ASCIIで32番、チルダは126番と定義されています。, 上記は一文字でしたが、これに両指定子を組み合わせて文字列とすることができます。たとえば、両指定子「+」は、直前のパターンの一文字以上の連続を表します。, 「WWWクリエイターズ」は、より多くの人が開発とウェブを楽しむための目指したウェブサイトです。コマンドラインやgitなど、開発ビギナーのつまづきやすい部分を共有しています。, この記事では、「任意の文字を含まない」や「任意の文字列(パターン)を含まない」など、否定の意味を持った正規表現について、1, Google Chrome(グーグルクローム)に保存されたキャッシュを完全に削除する方法をまとめました。また、CSSなど1, git pull して、リモートブランチの最新に合わせようとしたら・・、あれ?コンフリクト・・?なにこれ、うまくいかない1, Git における、git commit の取り消し方法や、やり直し操作に関する方法をまとめました。Git はどんなコミッ1, 正規表現での、数字に桁数に関する方法に関してです。また、これを応用して、数字の大きさの範囲を指定します。, 正規表現にいて、複数のパターンのうち「いずれか、または」を意味する「OR」を表現する方法についてです。, 多くの入門者にとって、「正規表現」は、意味のわからない記号の羅列のように感じられ、とっつきにくさのある記法の一つです。一1, CSS:ポップアップ背景のスクロールを禁止する新しい方法「overscroll-behavior」. WindowsでInstagramのフォロワーを一括解除する方法(サイトなど)ありませんか?グーグルプレイは使えません。…, アメリカ選挙(上院選挙)の件で、投稿しました。ジョージア州では、民主党と共和党の候補がいずれも過半数に達することができず、決…, 旧暦新暦の違いで知りたいです。明治になって新暦が採用されました(グレゴリオ暦)。旧暦の何月何日というのは、現代人の季節感と1…, Access VBAを動かしている際に発生する「ODBC--リンクテーブル'テーブル名'での更新に失敗しました」というエラーの原因と対処法につ…, 進んだ先のページで「許可する」ボタンを押してはてなによるアクセスを許可すると、認証が終わります。. 次回にこの辺りを研究します。, Twitter: @hachi8833、GitHub: @hachi8833 英数字の半角・全角変換は to_single_byte (半角化) や to_multi_byte() (全角化) で可能。これに upper() (大文字化) や lower() (小文字化) を組み合わせれば、like 演算子であいまい検索が可能になる。 しかし、これらはひらがなやカタカナの変換は行ってくれない。 英数字の半角・全角変換は TO_SINGLE_BYTE (半角化) や TO_MULTI_BYTE() (全角化) で可能。これに UPPER() (大文字化) や LOWER() (小文字化) を組み合わせれば、LIKE 演算子であいまい検索が可能になる。, そこで、UTL_I18N パッケージの TRANSLITERATE ファンクションを併用する。, こんな感じで、変換する文字列と変換モードを引数で指定する。引数の種類は以下などを参照。FW は「Full Width」の略で全角、HW は「Half Width」の略で半角、ってことが分かれば覚えやすいかな。, スペースはまだ平気かと思うが、波ダッシュ (全角チルダ) とかハイフン・マイナス・ダッシュとかの解釈が組み合わせるプログラム側と合わないかもしれないので、よく見ながら使うことにする。, https://docs.oracle.com/cd/E16338_01/appdev.112/b56262/u_i18n.htm;title, Oracle SQL 全角半角、大文字小文字を区別しないあいまい検索 - Lowaivill Tech Blog, Oracle Autonomous Data Warehouse (ADW) (1), Oracle Autonomous Transaction Processing (ATP) (1), Oracle Cloud Infrastructure Registry (OCIR) (3), Oracle Container Engine for Kubernetes (OKE) (4). []を使用すると、囲まれた文字にマッチさせることが出来ます。これに否定・除外の意味を持つ^(キャレット)を使用することで、「指定した文字を含まない」表現が出来ます。 例) ^ [マッチする例] B C D Required fields are marked *. Pocket. コボラー、ITコンサル、ローカライズ業界、Rails開発を経てTechRachoの編集・記事作成を担当。 おかげさまで勉強になりました。ありがとうございます! ここでは、文字列型のカラム内に半角カナ文字だけであるかを確認するSQLのサンプルを掲載しています。, 上記より、以下のSQLによって半角カナ文字のみのみであるレコードを取得することができます。, 上記テキストをコピペしても正常に動作しない可能性があります。REGEXP_LIKE 関数の第2引数は、日本語で書くと、[半角カナのピリオド ハイフン 半角カナのパとかピの ゜のみ] になります。, 例えば 0 ~ 9 の文字を含まない文字列であるかを確認したい場合は、次のように ^ をつけて否定します。自分用のメモとして掲載しておきます。, Your email address will not be published. 'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs'); var a8='a16040569170_2NI1KC_5GH2EQ_2HOM_BUB81';var rankParam='sBoWe8H3M_n.i5DeMQn917nzg_nzKuHkeBKue1nw.IYtjbLwj';var bannerType='1';var bannerKind='item.variable.kind1';var vertical='3';var horizontal='1';var alignment='0';var frame='1';var ranking='1';var category='パソコン・周辺機器'; [ ODP.NET ] Oracle Data Provider for .NET のダウンロードとインストール, [VBScript] ANSIコードまたはShift-JISコードを取得する(Asc関数), [ PHP ] XML ファイルのエンコーディングと改行コード ( DOMDocument ), [ VC++ ] MFC プロジェクトでデバッグ出力ウィンドウに出力する ( TRACE, ATLTRACE2 ), [ PHP ] OCI8 による Oracle 接続でトランザクションの混信を防止する, [ ODP.NET ] Oracle へ接続し SQL を発行する (OracleConnection…, [ Oracle ] データベースの文字コードを調べる ( NLS_CHARACTERSET ), [ PHP ] oci8:Oracle に接続中か判定する ( get_resource_type ), [ PHP ] 直接実行のPHPスクリプトからOracle接続エラー時は環境変数の登録を確認する, [Docker]MySQL5.7が起動しない(Error –initialize specified), [Rails]ActiveRecordは傑作!秀逸!だと?バカが伝染るから30km離れてくれ!ソーシャルディスタンスや!. 実は最近Go言語が好きで、Goで書かれたRubyライクなGoby言語のメンテナーでもある。 [Oracle] 半角カナ文字が含まれているか確認するSQL(REGEXP_LIKE関数) 2019年6月13日 まさお Comment. 正規表現において、使わないまま死ぬのはあまりにもったいない「Unicode文字プロパティ」について解説します。これについてネット上にまとまった情報がほとんどなく、しかたがないので自分で書くことにしました。書きながら早くも記事があふれてきたので、見出しに「連載」の文字を追加などしてみました。たぶん他所ではほとんど見かけることのない連載になると思います。よろしくお願いします。, 通常の開発においては、目的を達成する正規表現を作成してコードが動けば事足りるものであり、コーディング中に正規表現と延々付き合うことは普通ないでしょう。料理人は包丁を研ぐのに時間をかけすぎないものです。しかし特殊な業界の特殊な人々(日本に5人もいないと思います)は、来る日も来る日も正規表現を書き続けていたりするので、このUnicode文字プロパティは本当にありがたいものです。私の場合、もう古典的な \w とか [a-zA-Z] とか \d のような非UnicodeというかPOSIXレガシーな表現は、作り捨てのコード以外では使っていません。, 数字にマッチする[0-9]とかアルファベットにマッチする[a-zA-Z]のような文字クラスを指定することはよく行われています。しかし、日本語のように文字種の多い言語ではこういうクラス指定はあまりお気軽ではありません。, たとえばひらがなだけにマッチさせたい場合は[ぁ-ん]と表します (小さい「ぁ」から開始しなければならない点に注意)。でもこれでは使いたくなったときにその場で正確に思い出せる人はほとんどいないでしょう。, 漢字だけにマッチさせたいというときには従来から[一-龠]という表現がよく使われていますが、実は龠より先にも漢字はあります。ただそれらは日常まず使うことのないような、分厚い漢和辞典の後ろの方にしかないレアな漢字だったり古代中国の漢字だったりする「と思われる」ので、実用上何とかなっているというだけです。どうにもすっきりしません。, しかしUnicodeの文字プロパティに対応している正規表現エンジンであれば、漢字を[\p{Han}]と疑問の余地なく簡潔に書くことができます。さらに、漢字どころか古代エジプトの象形文字を含めたあらゆる象形文字(ここでは「アルファベット」ではない文字という意味)にマッチさせたければ[\p{Ideographic}]と書くことすらできます。さらに、[\p{Ideographic}]と書くと日本語中国語韓国語ベトナム語の漢字すべてにマッチします。あなたは泣けてきませんか。私は泣きました。全世界にも泣いていただきたいものです。, なお、[\p{Han}]で表現される漢字には日本語だけではなく中国語や韓国語で使用される漢字もすべて含まれます。ホー・チ・ミンは漢字では「胡志明」と書くので、ベトナム語でマッチすることがいつの日かあるかもしれません。油断なりません。, 同じように、たとえばひらがなの文字クラスは[\p{Hiragana}]とすっきり書くことができます。幸いなことに、現在は多くの正規表現で文字クラスにUnicodeの文字プロパティを使用できるようになっています。, さらに、英語や日本語どころかあらゆる言語での約物(パンクチュエーション:英語の感覚で言うとアルファベットと数字以外のすべて)とマッチさせたければ[\p{P}]と書けばよいのです。もう一度泣いてください。ただしタイ語のように句点に相当するものがそもそもない(文は半角スペースで区切る)という恐ろしい言語もありますのでご注意ください。, それでは実際に文字プロパティを使ってみましょう。今はrubular.comなどのように正規表現をその場で試せるWebサービスがいくつもあるので助かります。以後、特に断りのない限り、rubular.comとruby 1.9の組み合わせで説明します (rubularでRuby 2.0が使えないのが何とも残念)。, [\p{Han}]と入力し、test stringに適当な日本語を入力してみましょう。こんなふうにその場で結果を確認できます。, 文字プロパティの表記は大文字小文字を区別しますので、hanではなくHanと書くのが正式です。Rubularでは小文字のhanでも認識されていますが、当てにしない方がよいでしょう。, ところで、Unicode文字プロパティを使用する場合はできるだけ(必ずと言いたいところです) 文字クラスを表す [ ] の中に置くようにしています。Unicode文字プロパティは本質的に文字クラスを表現するためのものだからです。perlなど一部の言語では [ ] で囲まなくても文字クラスを使用できてしまいますが、行儀がよろしくありません。.NET Frameworkのように [ ] で囲まないとエラーになるのが望ましい実装と言えます。, では今度は[\p{han}\p{Katakana}]と書いてみましょう。今度は漢字とカタカナだけにマッチしました。皆様御存知の通り、文字クラスでは記述の順序は無関係です。, おやおや、ちょっと変です。「サービス」の長音がマッチしていません。どうなっているのでしょうか。, ここで強い味方をご紹介します。w3cのrichard ishidaさんのwebサイト (http://rishida.net) では文字コードに関する強力かつ美しいWebツールがいくつも公開されていて、私は日々拝み倒しながら使っておりますが、その中からString analyserを使いましょう。Text you want to look upボックスにこの長音文字を入力してGoをクリックしてみましょう。, こんなに大きな長音文字をまじまじと眺めることは人生においてそうないと思います。実はこんな形をしているんですね。漢字の一にも似ていますが、もちろん違う字です。

ɧ台模試 ƈ績優秀者 Ő前, Ãーボック Âニーカー Ãンズコーデ, Ů具 ŏり置き Áつまで, Âモティー ɀ絡先交換 Ɩ法, Âクセル Ɨ付ごと ǽ線, Ãラクエ 6 Ãブルアップ Ɯ大, Ãースデーケーキ Á取り寄せ Ɯ名店, Ɨ本語 Ľ ɟ, Âンジャー Â Ãーチ ŏコミ,

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.