下記のような文字数の多いマッチング演算子について。
if($test =~ /^\s+\S+\s+(\S+)\s+(\S+)\s+\S+\s+(\S+)\s+(\S+)\s+\S+\s+\S+\s+\S+\s+\S+
\s+\S+\s+(\S+)\s+\S+\s+\S+/){
上記は一行に続けて記述しています。
(見た目は2行に見えますが1行記述です。コンパイルすると正常に動作します)
これを
if($test =~ /^\s+\S+\s+(\S+)\s+(\S+)\s+\S+\s+(\S+)
\s+(\S+)\s+\S+\s+\S+\s+\S+\s+\S+
\s+\S+\s+(\S+)\s+\S+\s+\S+/){
のように改行して、コンパイルしてみると
うまく動きません。ドット演算子を使用して下記のように記述し直しても
うまく動作しません。
if($test =~ /^\s+\S+\s+(\S+)\s+(\S+)\s+\S+\s+(\S+)
.\s+(\S+)\s+\S+\s+\S+\s+\S+\s+\S+
.\s+\S+\s+(\S+)\s+\S+\s+\S+/){
改行して記述するにはどうすればよいのでしょうか?
No.2ベストアンサー
- 回答日時:
正規表現で迷ったら、まずは perldocの perlre を読んでみましょう。
http://perldoc.jp/docs/perl/5.14.1/perlre.pod
通常、正規表現を改行で分割して表記することはできません。
改行文字が「改行文字に一致するパターン」としての意味を持ちます。パターン中に\nと書くようなものです。
.演算子は文字列を連結する演算を行うものです。正規表現内は、明示しない限り「演算」はしません。
連結の演算するなら、 パターンでよく使う「.(任意の1文字)」が文字列連結に使われてしまいます
対処法としては
・/x を使う。詳細はマニュアルで
・予め文字列変数に入れて、それをパターンに使う
$pattern = '^\s+\S+\s+(\S+)\s+(\S+)\s+\S+\s+(\S+)';
$pattern .= '\s+(\S+)\s+\S+\s+\S+\s+\S+\s+\S+' ;
$pattern .= '\s+\S+\s+(\S+)\s+\S+\s+\S+' ;
if($test =~ /${pattern}/){ ~
・このパターンに限っては、「1個以上の空白で区切られた文字列」なので、
@test1=split(/\s+/,$test) ;
とsplitして
if(scalar @test1== 14) { # splitされた項目数を数える→過不足あるなら期待しているデータではない
$test1[2], $test1[3],$test1[5] ;# $1,$2..に相当する位置
等必要な箇所を使う、という方法もあります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) VScodeでpythonプログラムの関数を実行したい 2 2022/07/13 19:24
- JavaScript [再掲]指定したパスが現URLに含まれていたら特定要素を削除するJavascriptのコードについて 1 2023/05/10 15:09
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 2 2022/06/25 22:42
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- C言語・C++・C# 質問です 下記のコードを分かりやすく解説お願いします 初心者です #include ‹stdio.h 3 2022/05/26 22:03
- その他(プログラミング・Web制作) COBOL数値転記をCOPY句内での仕様 6 2022/06/15 18:48
- Perl perl このテキストファイルを簡単に配列に入れるには? 2 2022/04/27 20:24
- PHP 記述のおかしいところを教えて下さい。 1 2023/02/03 11:25
- Excel(エクセル) エクセルのイベントVBAを複数のシートで動かしたい 1 2022/12/07 16:55
- Visual Basic(VBA) ExcelVBA No.を自動連番で設定をしながらデータ入力をしたい 2 2022/08/03 18:19
関連するカテゴリから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ランキング
-
openした後、closeしないでプロ...
-
テキストファイルで提出とは?
-
INDIRECT 横に再度抽出したい
-
Perlで特定文字列から特定文字...
-
perlをバージョンアップしたら...
-
Wallpaper Engineでおすすめの...
-
arduino の割り込み処理について
-
アルファベットに付いて質問し...
-
Strawberry Perl for Windows ...
-
Perlで時間の計算
-
このファイルを開く方法で困っ...
-
TeraPadエディターの操作方法に...
-
cgiでサーバーにファイルを追加...
-
フローチャート 九九
-
LinuxにおいてのPerlのプログラ...
-
perl 初等プログラミングについて
-
Perlのエラーについてご教授く...
-
こんにちは ブラケッツでプログ...
-
bashスクリプト
-
perlプログラミング 空白行削除
おすすめ情報