![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
「***************** Version 2 *****************」
↑という文字列を評価して「2」を取りたい為に「/^\*+\s*Version\s+(\d+)\s*\*+\s*$/」という正規表現を使用しています。
「***************** バージョン 2 *****************」
同様に↑という文字列を評価して「2」を取りたいので「/^\*+\s*[バージョン]\s+(\d+)\s*\*+\s*$/」としましたがうまく動きません。
日本語文字列が正しく動作していないようです。
何らかの形でエンコードして当てはめればよいと思うのですが、どのような値を設定すればよいでしょうか?
「バージョン」以外にも「ユーザ」、「日付」などの日本語を同様にマッチさせる必要があるため、変換方法を教えて頂けると助かります。
perlはほぼ使えないため、WebやWindows上でのアプリケーションで指定文字列を渡すと変換できる物をお願い致します。
(perlは入っているためコマンドを叩けばOKというのであればそれでも構いません)
与えられる「バージョン」という文字の文字コードはSJISになります。
No.3ベストアンサー
- 回答日時:
一応、検索に有効なキーワードを入れてあったんだけど
> Unmatched [ in regex; marked by <-- HERE in m/^\*+\s*バー
「ダメ文字」で検索。例えば
http://sites.google.com/site/fudist/Home/grep/sj …
ーに[が含まれているため、ここで[が始まっているのに対応する]が無い、というエラー。
[]で括ってあったときは、[の中に[を書くと、「[という文字」の意味になるので、エラーにならなかった。
ー[] とすると、 「ー」の1バイト目+ [[] となって、「ー」の1バイト目+「[という文字」 となって、ーにマッチする。
あるいは、\Q \Eでメタ文字を無効にする。
> そのややこしい部分をどのように記述すればよいのかを質問したつもりでした。
「perl unicode」で検索。例えば、以下のところとか。
http://www.lr.pi.titech.ac.jp/~abekawa/perl/perl …
http://www.rwds.net/kuroita/program/Perl_unicode …
回答ありがとうございます。
下記のように\Qと\Eで該当文字を囲む事で正しい結果が得られました。
/^\*+\s*\Qバージョン\E\s+(\d+)\s*\*+\s*$/
No.2
- 回答日時:
> /^\*+\s*[バージョン]\s+(\d+)\s*\*+\s*$/
なんで [バージョン] と [] がついてるのでしょうか?
最初のを[Version]としたらどんなことになるか、おわかりでしょうか?
> perlはほぼ使えないため、WebやWindows上でのアプリケーションで指定文字列を渡すと変換できる物をお願い致します。
> (perlは入っているためコマンドを叩けばOKというのであればそれでも構いません)
すみません。おっしゃってることの意味がわかりません。
なにからなにに変換するのでしょうか?
> 与えられる「バージョン」という文字の文字コードはSJISになります
入力もPerlのスクリプトもShift_JISで書かれているのなら、以下の点に注意すればそのまま記述するだけです。
・日本語一文字は2バイトの文字の並びだと解釈される。
固定の文字列ならあまり問題無い。
*,+等の量指定子、[]等の文字セットでは、注意が必要。量指定子は後半の1バイトだけの繰り返し、[]では前半の1バイトか後半の1バイトのどちらかにマッチする、という意味になる。
・いわゆる「ダメ文字」がある。よく言われる\以外にも、リストを表す@、正規表現で使われるメタ文字も対象になるので、かなりの文字が該当する。
日本語も一文字として扱いたいのなら、Unicode文字列として変換して...となります。
どうするかはややこしいので検索でもして調べてください。
お答えありがとう御座います。
No.1の方のお礼に書かせていただきましたが、「[」、「]」は不要でした。
>なにからなにに変換するのでしょうか?
perl内ではsjisは使用できないかと思い、何らかの文字コードに変換するのかと思い書かせていただきました。
>どうするかはややこしいので検索でもして調べてください。
そのややこしい部分をどのように記述すればよいのかを質問したつもりでした。
>固定の文字列ならあまり問題無い。
とのお答えもありましたが、No.1の方のお礼に書いたとおりどうにもうまくいきません。
意図がわかりずらい文章で申し訳ありませんが、よろしくお願い致します。
No.1
- 回答日時:
フリーのサクラエディタ(
http://sakura-editor.sourceforge.net/)の検索・置換の正規表現では
「^\*+\s*[バージョン]\s+(\d+)\s*\*+\s*$」でなく
「^\*+\s*バージョン\s+(\d+)\s*\*+\s*$」であればOKです。
(サクラの検索・置換では”/”は不要)
日本語の周りの”[”、”]”は不要では?
お答えありがとう御座います。
確かに「[」、「]」は不要でした。
「/^\*+\s*バージョン\s+(\d+)\s*\*+\s*$/」として実行した所↓のエラーがでました。
「Unmatched [ in regex; marked by <-- HERE in m/^\*+\s*バー <-- HERE ジョン\s+(\d+)\s*\*+\s*$/ at 」atの後は略させていただきました。
こちらで調べた所「ー」は「\ー」としろという情報がありましたのでこちらも試しましたが、うまくいかない状態です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) EXCEL VBA 単語置き換え について質問です ブック名 ぶぶぶ シート名 ししし セル V3〜 3 2023/03/08 01:41
- その他(パソコン・周辺機器) WINDOWS11 IMEの日本語入力で困っています 4 2023/04/29 19:24
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- Windows 10 MicrosoftIMEでトラブル、助けてください m(_._)m 4 2023/05/16 14:11
- その他(コンピューター・テクノロジー) 【Tableau Desktop】文字列から8桁の数字を日付型(yyyyMMdd)として取得 1 2023/07/31 10:17
- Evernote Evernote(エバーノート)の文字化け 1 2022/04/05 19:30
- その他(プログラミング・Web制作) テキストエディタで複数行にわたる文字列の行頭に番号を振る方法 4 2023/03/11 12:57
- Word(ワード) 表の縦罫線を移動するピッチ 1 2022/10/12 12:24
- HTML・CSS リンクバナーのHTMLタグ。画像を変えたり、設置位置を変えるとバナー貼付け側はどう見える? 2 2023/02/01 12:01
- その他(メールソフト・メールサービス) メールソフトを教えてください 1 2023/03/28 23:32
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
テキストファイルで提出とは?
-
ファイルをディレクトリ分配の...
-
openした後、closeしないでプロ...
-
perlのプログラミング 部分入れ...
-
Perlのエラーについてご教授く...
-
画像が表示でnull; this.src
-
perlプログラミング 空白行削除
-
Perlで特定文字列から特定文字...
-
ラズベリーパイ初心者です。 ラ...
-
アルファベットに付いて質問し...
-
#!/usr/bin/perlで書きだしたCG...
-
perlのflock関数でロックをかけ...
-
AI sisterとは、偽物の人ですか?
-
bashスクリプト
-
ファイルアイコンの左下に緑の□...
-
perlでリテラル値はメモリにど...
-
perlで2次元配列をサブルーチ...
-
Perlで時間の計算
-
perlについて
-
perlのrequireの動き方について...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
if等判定文での定数、変数の記...
-
型を調べる
-
perl 正規表現でエラー
-
perlのif文で・・・・・
-
perlのシングルクォートとダブ...
-
perlでの入れ子文字列削除
-
演算子と括弧
-
ある書籍で、見つけました、per...
-
msgboxに何故括弧がないの!
-
文字列比較
-
perl tr での変数の使い方
-
Perlでの改造方法
-
perlでの括弧対応チェック
-
例外処理のフローチャートの記...
-
Excel VBAでリンク切れをチェッ...
-
ユーザー定義関数に#NAME?が返...
-
VBAで別モジュールへの変数の受...
-
VBでグローバル変数を宣言するには
-
エクセルVBAでシートモジュール...
-
'Range'メソッドは失敗しました
おすすめ情報