![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
No.3ベストアンサー
- 回答日時:
#2 の 3条件をまともに満たすと, 厳密には「正規表現」では処理できません (正規表現では, 括弧の対応をとることができないので). ですが, Perl の「正規表現」だと処理できちゃったりします.
「プログラミング Perl」第3版 Volume 1 にはこの辺も書いてあるので, それを見れば書けるはずですが, (??{ $x }) を駆使する必要があって面倒なので気が向いたら書きます.
もしくは, 「構文解析」をさせる方がよいかもしれません.
No.4
- 回答日時:
#3 です.
ああ, ステップバイステップで書けば簡単だった.
まず, 目標とする正規表現を $expr に入れることにしましょう.
すると, 目標としては
・1文字なら OK → \w
・式を + とか * でつなぐのは OK → (??{ $expr }) (?:[+*] (??{ $expr }))*
・括弧でくくっても OK → \( (??{ $expr }) \)
なので, 全体で
my $expr;
$expr = qr/
\w
|
(??{ $expr }) (?:[+*] (??{ $expr }))*
|
\( (??{ $expr }) \)
/x;
かな?
もっと簡単になるかもしれませんが.
No.2
- 回答日時:
再び、補足要求です。
目的は、文字列が以下3つの条件を満たすような「式」として妥当かどうか、を判別したいように見受けられるのですが、
いかがでしょうか。
[3つの条件]
・a : 1文字からなるものは式である
・expr + expr : 式と式を + もしくは * で結合したものは式である
expr * expr
・(expr) : 式を ( ) で囲んだものは式である
というのは、文字列に含まれる括弧のそばに演算子の有無だけをチェックしますと、
A+B)*C
のような相対する括弧がない文字列も OK ということになってしまうのですが。
No.1
- 回答日時:
正規表現でマッチングするのがいい方法だと思います。
なお、提示された情報は、プログラムを組み立てるのに十分でなく、
次のことをはっきりさせる必要があります。
・「演算子」とは、具体的にどういった文字をさすのか。
・対象となる「文字列」に「括弧」は必ず含まれるのか?
・その場合、「括弧」は一つだけなのか、それとも複数含まれるのか?
・「括弧」が複数あった場合、ひとつの括弧でも演算子がそばになければNGなのか?
・「括弧」の"そば"というのは、前だけなのか、後ろもありなのか。
お返事ありがとうございます。
・「演算子」とは、具体的にどういった文字をさすのか。
→()*+の4種類です。
・対象となる「文字列」に「括弧」は必ず含まれるのか?
→含まれるとは限りません。
A+B
(A+B)*C
・その場合、「括弧」は一つだけなのか、それとも複数含まれるのか?
→複数有りです。
((A+B)*(C*D)+E)
・「括弧」が複数あった場合、ひとつの括弧でも演算子がそばになければNGなのか?
→(((A+B)*(C*D))) OK
(A+B)(C*D) NG
・「括弧」の"そば"というのは、前だけなのか、後ろもありなのか。
→前も後ろもありです
ただし文字列の前と後ろは無しです。
以上のような条件です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 数学 (〇+〇)÷2=〇 と (◇×◇)÷2=◇ 10 2023/03/23 00:03
- Excel(エクセル) エクセルの数式で教えてください。 2 2023/03/09 08:37
- 葬儀・葬式 政治家への香典はOK? 2 2022/04/28 11:19
- 倫理・人権 なんで一昔前のプリクラは男性が一人や男性同士で入る事は禁止されていたんでしょうか?それにカップルや息 1 2022/03/31 22:23
- 会社設立・起業・開業 会社の社長が個人事業主でもある場合、同一業種や関連業種はNGって本当? 5 2022/04/21 17:00
- Excel(エクセル) エクセルについて教えてください。 1回目が80以上(数字) or 対象外 (文字列)or (空欄) 2 2022/10/17 11:42
- Java Java 南京錠 2 2023/02/04 11:46
- Excel(エクセル) エクセルの数式で教えてください。 2 2023/03/09 10:07
- その他(IT・Webサービス) 検索式の書き方 3 2023/03/22 17:29
- Excel(エクセル) 【Excel関数、count系】どなたか教示下さると助かります。 Excelでシフトを管理しており、 2 2022/07/09 06:34
関連するカテゴリから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'メソッドは失敗しました
おすすめ情報