乾燥肌、冬の肌トラブルに本気の対策 >>

正規表現で特定文字列の全角カナと半角カナの両方を検索したいと思っています。

たとえば リンゴ と リンゴ(半角カナ) にマッチする正規表現、ということです。

想定環境はWindowsXP Pro+秀丸7です。

意味不明でしたら加筆修正しますのでよろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

リンゴ|リンゴ(半角カナ)


でどうですか?
ヘルプ→検索系コマンド→正規表現に使い方が記載されています。
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QExcelで正規表現やワイルドカードなどを使って置換したいのですが…

Excelの中で置換をしたいのですが、
例えば以下のように( )かっこでくくられた不規則な数字を検索し、その前後に記号を付加するといった具合です。
Wordだと置換で正規表現が使えますが、Excelではやはりマクロを作らないとだめなのでしょうか?

 置換前
  あいう(123)かきく(あああ)
  さしす(ははは)たち(589)つ
   ・      ・
   ・      ・

 置換後
  あいう★(123)★かきく(あああ)
  さしす(ははは)たち★(589)★つ
   ・      ・
   ・      ・

Aベストアンサー

以下の正規表現アドインを使用すると可能です。
http://srcedit.pekori.jp/tool/excelre.html

置換前 ((\d+))
置換後 ★$1★

Q半角記号、全角記号を含む正規表現を作れなくて困っています。

システムの入力チェックのために
!"#$%&'()=~|`{+*}<>?_-^\@[;:],./
!”#$%&’()=~|‘{+*}<>?_-^¥@「;:」、。・

などの半角記号、全角記号を1個以上含むとtrueを返す
正規表現を作りたいのですが、うまくできなくて困っています。
以下の[ ]に入れる値で、何か良いものはありませんか?


Boolean b = Pattern.compile("[ ]+").matcher(input).matches();

Aベストアンサー

>全角はエスケープシーケンスがいらないのでしょうか?
いらないです。エスケープする必要がないので。

>エスケープシーケンスをあまり使いたくないので、範囲指定する方法を知りたいのです。
うーん。全角の記号はエスケープする必要がないけど、「範囲指定」だとUnicodeで範囲指定できるかも。
ただ、全角の記号がUnicodeで連続になっていればいいけど、(おそらく)なっていないだろうから。
正規表現の読みやすさ?を考えてのことだったら…
苦しいかもしれないけど
 String hankaku = "\\p{Punct}"; //半角記号
 String zenkaku = "!”#$%&’()=~|‘{+*}<>?_-^¥@「;:」、。・"; //全角記号
 boolean b = Pattern.compile("["+hankaku+zenkaku+"]+").matcher(input).matches();
ってな感じでどうでしょう…。

Qgrepで全角文字の行を抽出

grepの検索でテキスト内のひとつでも全角文字がある行を
抽出したいと思ってます。1つの方法は見つかったのですが、
時たまバグがあるそうですので、
他の方法を探そうと思ってます。
わかっている方法は、以下のとおりです。
> grep -n '.*[^ -~。-゜].*' test_data.txt

よろしくお願いします。

Aベストアンサー

「ASCIIに含まれる文字だけ」の行以外という案で、
LANG=C で、ロケール(言語)を英語にした上で、grep -v で除外を指定。

LANG=C grep -n -v '^[[:cntrl:][:print:]]*$' test_data.txt

QIOException ってどういうときに起こるのでしょうか?

IOException ってどういうときに起こるのでしょうか?

http://www.atmarkit.co.jp/fjava/rensai2/javaent12/javaent12.html
を見て勉強しています。

  catch ( IOException e) {
    System.out.println( "キーボードが故障しているのかもしれません" );
  }

と書いてあります。
ハード(キーボード)が故障しているのを Java のプログラムのレベル(ソフトウェア)で感知できるというのがよくわかりません。「

NumberFormatException の方はわかるのですが・・・

Aベストアンサー

現実的には、キーボードからの入力でIOExceptionが発生することは、
ほとんどあり得ないと思います。
そもそも、キーボードが故障していたとしても、
IOExceptionは投げられないでしょう。
「キーボードが故障しているのかもしれません」というのは、
その記事の著者が冗談で書いたのだと思います。

ではなぜ、try-catchを書かなくてはいけないのか?
InputStreamやBufferedReaderは、
データ入力を抽象化したものだからです。
実際の入力元はキーボードだったり、ファイルだったり、
ネットワーク接続だったりするわけですけど、
InputStreamは、その入力元の情報を持っていないので、
データを読み取る際は常に
IOExceptionをキャッチするコードを書かなくてはいけません。
たとえ、絶対にIOエラーが発生しないストリームだとしても。

さらに付け加えるなら、
そもそも「標準入力=キーボード」であるとは限りません。
(一般的にはキーボードであることが多いですが。)
Javaでは、
System.setIn(InputStream)
を呼び出して、標準入力を変えてしまうことができますし、
標準入力を指定してプログラムを実行することができるOSもあります。

追伸1:
例外をキャッチしたときは、
スタックトレースをプリントすることをおすすめします。
catch (IOException e) {
e.printStackTrace();
}

追伸2:
そのプログラムでIOExceptionを発生させる最も簡単な方法は、
readLine()を呼び出す前に
標準入力(System.in)を閉じてしまうことです。
System.in.close();

現実的には、キーボードからの入力でIOExceptionが発生することは、
ほとんどあり得ないと思います。
そもそも、キーボードが故障していたとしても、
IOExceptionは投げられないでしょう。
「キーボードが故障しているのかもしれません」というのは、
その記事の著者が冗談で書いたのだと思います。

ではなぜ、try-catchを書かなくてはいけないのか?
InputStreamやBufferedReaderは、
データ入力を抽象化したものだからです。
実際の入力元はキーボードだったり、ファイルだったり、
ネットワーク接...続きを読む

QCloseとDisposeの違い

みなさまこんばんわです。よろしくお願い申し上げます。

VB.NET 2008でコーディングしています。
CloseとDisposeの違いについて教えていただきたいのです。

これらのメソッドは、開いたファイルを閉じるときなどにも使いますが、今回お尋ねするのは、フォームを閉じるとき、しかも、自ら呼び出すとき(Me.Close() と、Me.Dispose() )のみに限ったこととしてお話しさせていただきます。

たとえば、ShowDialog() で呼び出したフォームは、そのフォーム内でMe.Close() しても、プロセスは残り、たとえば、タイマーコントロールのイベントに記述していますと、それは実行され続けます。

これを防ぐために、Me.Dispose() を使います。すると、きれいにプロセスは終了し、イベントは発生しない模様です。

そこで、「フォームを閉じる」意味のMe.Close() をすべてMe.Dispose() に変えてしまいました。確実にプロセスを破棄出来ると思ったからです。Webで調べると、違いは「再利用できる、できないの違い」という答えがありましたが、それはきっと、ファイルやオブジェクトのことで、フォームの場合は、再びShowまたはShowDialogで表示させることは可能でしたので、特に問題は感じていませんでした。

ところが、アプリケーション設定で、「最後のフォームを閉じるとき」にアプリケーションがシャットダウンする設定になってるのに、シャットダウンしてくれないことが起こりました。調べてみると、Me.Dispose() が原因。Me.Close() に変えるとうまくいきました。

わけわからなくなってきました。。。

ちなみに、その残ったフォームは、スタートアップフォームであり、別のフォームからShowまたはShowDialogメソッドで呼び出したものではありません。

ここで4つの仮説を立ててみました。

1. ShowDialogで呼び出したフォームは、Me.Dispose()、Showで呼び出した、あるいは、スタートアップフォームは、Me.Close() すれば破棄できる

2. ShowDialogで呼び出したフォームは、Me.Dispose()、スタートアップフォームは、Me.Close()、Showで呼び出したフォームは、どちらでも、破棄できる

3. 呼び出し方ではなく、別の要因が存在する

4. 併記する必要がある場合がある

Me.Close()
Me.Dispose()

または、

Me.Dispose()
Me.Close()



どれが正しいのでしょうか?どなたがご存じの方がいらっしゃいましたら、ご教授いただけませんでしょうか? どうぞよろしくお願い申し上げます。ありがとうございました。

みなさまこんばんわです。よろしくお願い申し上げます。

VB.NET 2008でコーディングしています。
CloseとDisposeの違いについて教えていただきたいのです。

これらのメソッドは、開いたファイルを閉じるときなどにも使いますが、今回お尋ねするのは、フォームを閉じるとき、しかも、自ら呼び出すとき(Me.Close() と、Me.Dispose() )のみに限ったこととしてお話しさせていただきます。

たとえば、ShowDialog() で呼び出したフォームは、そのフォーム内でMe.Close() しても、プロセスは残り、たとえば、...続きを読む

Aベストアンサー

Me.Close()
Me.Dispose()
は根本的に違うものです。

formについて、Close()メソッドはフォームの表示を終了させるメソッドです。

ほかのクラスも同様。すべてのDispose()メソッドについて、これはインスタンスの破棄を明示的に行うものです。

>再利用できる、できないの違い

Dispose()はインスタンスが破棄されるため、再びコンストラクタを用いて、インスタンスを生成しないいけません。

一方Close()はインスタンスが残っているので、それを利用することができます。

>1. ところが、アプリケーション設定で、「最後のフォームを閉じるとき」にアプリケーションがシャットダウンする設定になってるのに、シャットダウンしてくれないことが起こりました。調べてみると、Me.Dispose() が原因。
Me.Close() に変えるとうまくいきました。

通常はどちらでもうまくいきます。

>2. ShowDialogで呼び出したフォームは、Me.Dispose()、スタートアップフォームは、Me.Close()、Showで呼び出したフォームは、どちらでも、破棄できる

ShowDialogの場合は、メソッド内部で、ハンドルが破棄されているため、Close()メソッドの際にDispose()メソッドが呼び出されます。

>3. 呼び出し方ではなく、別の要因が存在する

そう思います。

>4. 併記する必要がある場合がある

インスタンスを明示的に破棄したほうがよい場合は多く存在します。
Disposeが使えるメンバはIDisposableをインターフェースとして持っているメンバです。
これらのメンバは、外部とのやり取りを行うものが多くあります。
たとえばSQLClientに含まれるようなメンバです。

外部とのコネクションを確実に破棄を保障してほしいなどという場合がありますよね、このようなときに使用します。

Using構文を使用するのとまったく同じ理由になります。
正確にはUsing構文を使用できるメンバには条件があります、IDisposableをインターフェースとして持っているメンバに限るというものです。

ほかにもガーベージコレクタによるファイナライズを伴うかどうかという違いがあります。
Disposeの場合はファイナライズが同時に行われるため、使用していたメモリ空間を開放することができます。

上記のような理由により、
Me.Close()
Me.Dispose()
は両方書いたほうがよいと思います。

蛇足ですが、
Me.Dispose()
Me.Close()
はエラーになります。
Me.Dispose()により、Me本体(インスタンス)は削除されてしまいます。
存在しないMeに対してCloseメソッドを要求することはできないためです。

Me.Close()
Me.Dispose()
は根本的に違うものです。

formについて、Close()メソッドはフォームの表示を終了させるメソッドです。

ほかのクラスも同様。すべてのDispose()メソッドについて、これはインスタンスの破棄を明示的に行うものです。

>再利用できる、できないの違い

Dispose()はインスタンスが破棄されるため、再びコンストラクタを用いて、インスタンスを生成しないいけません。

一方Close()はインスタンスが残っているので、それを利用することができます。

>1. ところが、アプリ...続きを読む

Q正規表現で全角数字を半角数字に置換する方法は?

いつもお世話になっております。

テキスト内の全角数字5桁のみを該当の半角数字5桁に置換する方法を探しています。

OS:Win
テキストエディタ:sakuraエディタ、秀丸

例)
----------------------------------------
あいうえお01234かきくけこ99さしすせそ

あいうえお01234かきくけこ99さしすせそ
----------------------------------------

正規表現で行えばいいと思い、置換文字列を
 [0-9][0-9][0-9][0-9][0-9]
あるいは
 [0-9]{5}
にしましたが、置換後の文字列が分かりません。

試しに検索で上記の文字列を試すと、該当箇所がマークされるので、
置換前の文字列は合っています。

置換後の文字列をご教授願えますでしょうか。


※テキストエディタで無理ならプログラム組みます。
VBScriptを考えていますが、他に良い言語があれば併せて教えてください。

Aベストアンサー

No.4 & No.5 です。
質問文中の「のみ」を見逃していました。
6桁や10桁は変換してはいけないのですね。
方法を考えてみたのですが、やや手順が長くなってしまいました。
なお、テキストファイルを処理するので表は存在しないものとしています。
(存在する場合は単語の先頭や末尾を考慮する必要がある)

1.全角数字以外にはさまれた全角数字5文字を変換する
(1) 検索でワイルドカード使用
(2) 検索する文字列は「[!0-9][0-9]{5}[!0-9]」
(3) 「検索先」「メイン文書」を順にクリック
(マクロの記録中ならここでいったん閉じて再び検索)
(4) 検索する文字列を「[0-9]{5}」にする
(5) 「検索先」「現在の選択」を順にクリック
(6) 閉じる
(7) 半角に変換
これで文頭以外は変換できるはずです。

2.文頭
文頭に全角数字5文字がある場合、それより前に文字がないため上記手順では選択されません。
そこで、(2)の検索する文字列を「<[0-9]{5}[!0-9]」にしてもう一度上記手順を実行するか、いっそのこと手動で選択して半角に変換するか等を行う必要があります。

何度も使用するなら記録マクロにしておけばよいと思います。


ところで、サクラエディタはマクロとしてWSHが使用可能だと聞いたことがあります。
ということは、たとえばNo.6様提示のソースを改造したり、VBScriptで書いたりしてマクロとして使用してもよいのではないでしょうか。

No.4 & No.5 です。
質問文中の「のみ」を見逃していました。
6桁や10桁は変換してはいけないのですね。
方法を考えてみたのですが、やや手順が長くなってしまいました。
なお、テキストファイルを処理するので表は存在しないものとしています。
(存在する場合は単語の先頭や末尾を考慮する必要がある)

1.全角数字以外にはさまれた全角数字5文字を変換する
(1) 検索でワイルドカード使用
(2) 検索する文字列は「[!0-9][0-9]{5}[!0-9]」
(3) 「検索先」「メイン文書」を順にクリック
(マクロの記録...続きを読む

QJavaで文字列をゼロ埋め(ゼロパディング)

Javaで文字列を前ゼロで埋め(ゼロパディング)たいのですが、
exceptionが発生してうまくいきません。
だれかお助け頂けたら助かります。

(例)123の前に0を5つ結合したい場合、

String str2="123";
String str = String.format("%08s",str2);

で問題無いと思ったのですが、
exceptionが発生してしまいます。

回答お待ちしております。

Aベストアンサー

そのExceptionはどういったExceptionなのか把握されてますか?
何が悪いのかの理由もそのExceptionからわかると思いますが。

http://docs.oracle.com/javase/jp/6/api/java/util/Formatter.html#syntax
をよく読んで"%08s"という指定ができるのかどうか確認しましょう。

やられたいことは"123"の先頭に"00000000"をつけて後ろから8文字取り出せばできると思いますが。


人気Q&Aランキング

おすすめ情報