
正規表現を使って複数条件を指定する場合
"文字列内に●がはいっていたらtrue
もしくは、先頭に▲がある場合はfalse"
という、論理和的な条件は分かるのですが、
"文字列内に●がはいっていたらtrue
ただし先頭に▲がある場合はfalse"
という、論理積的な条件の作り方がよく分かりません。
前者では、「もしくは」になってしまうので
先頭に▲があろうがなかろうが、●さえ入っていればtrueになってしまいます。
しかし、やりたいのは「ただし」であり
●がたとえ入っていようと、▲が先頭にあればflaseにしたいのです。
どうすれば、後者の条件を正規表現で実現できるでしょうか?
No.3ベストアンサー
- 回答日時:
論理的な話をしているようなので...
「ただし」という言葉を使うのがわかりづらくしているような気がします。
「かつ」「または」だけを使って構成しなおしてみるのがいいと思います。
"文字列内に●がはいっていたらtrue
ただし先頭に▲がある場合はfalse"
は、
(1)
"文字列内に●がはいっており、
かつ先頭に▲以外がある場合はtrue"
と考えるのがいいではないでしょうか。
またはさらに、
(2)
"文字列内に●がはいっており、
かつ先頭に▲がない場合はtrue"
速度などを考えずに言葉どおりにやると
(1)
if(preg_match("/●/",$val) and preg_match("/^[^▲]/",$val))
(2)
if(preg_match("/●/",$val) and ! preg_match("/^▲/",$val))
のようになるかと思います。
(もちろんstrposなどを使ってもいいと思います。)
回答ありがとうございます。
なるほど、if内に
preg_matchを二つ置けばよかったんですね。
でも”速度などを考えず”にということは
速度的にはあまりよくない処理方法なのでしょうか・・・。
No.2
- 回答日時:
pregでいいのなら、
^(?!▲).*●
回答ありがとうございます。
?ってphpのpregで使えるんでしょうか・・・。
バージョン等の問題なのかもしれませんが
エラーになってしまいます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
電話番号のチェック ハイフン...
-
PHPで<a>タグ内からURLと文字を...
-
アンカーリンク 正規表現
-
Excelで数字のみを2倍3倍にする...
-
C++で空Enterの入力を判...
-
VBAのコマンドボタンの文字列の...
-
エクセルのCOUNTIFが正しくカウ...
-
VBAでCSVをExcelに取り込む時に...
-
文字化け変換方法
-
文字の入力で横バー上段、中断...
-
vbsで2文字以上の空白を改行に...
-
jsp 改行コードで改行させて表...
-
ソースコードの1行が長いとき...
-
エスケープ文字の復帰(¥r)と...
-
JavaDoc コメントの改行について
-
C言語の標準入力で改行しない方法
-
\\nと\\rの違い
-
文字コードの検出が正しいかを...
-
メッセージボックスで1025文字...
-
htmlのソースからテーブルの値...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
、"(ダブルクォーテーション)...
-
正規表現で、半角大文字と半角...
-
PHPで変数から1行目だけを取得...
-
PHPで<a>タグ内からURLと文字を...
-
携帯アドレスの正規表現
-
VBAを使ってHTMLソースから特定...
-
switchの大量分岐の高速化
-
正規表現について
-
preg_matchでエラーが出ます。
-
電話番号のチェック ハイフン...
-
変数に指定文字列が含まれると...
-
1ファイルから項目を正規表現で...
-
正規表現で「0」のみ抽出
-
複雑な/による文字列の分割につ...
-
サイトが移動しました(301)が...
-
Smartyで部分一致
-
PHPで あるフォルダ内の、特定...
-
PHPの正規表現について
-
Excelで数字のみを2倍3倍にする...
-
正規表現 先頭一桁をマッチさせ...
おすすめ情報