正規表現で コロン” . ”の連続をどう区別するか悩んでいます
例えば以下のような文字列
(行頭から始まる文章)
----------------------------------------
.おはよう
..こんばんにゃ
...さよなら
----------------------------------------
コロン” . ”の連続を区別し、そして
文末まで全部取りこむ必要があるのが難しいところです
こうすると上の三行の例の全部が含まれてしまう
^[\.?].*
コロン” . ”1個だけで始まる文の
.おはよう だけ 文末まで取得
コロン” . ”2個で始まる文の
..こんばんにゃ を 文末まで取得
と区別したいときはどうしたらいいのでしょう?
説明するとややこしいのですが
用途は 秀丸のアウトラインの強調文字表現をしたいため
No.2
- 回答日時:
まず最初に
「.」 は「ピリオド」です。「ドット」と呼ぶこともあります。
コロンは「:」です。ピリオドを縦に二つ並べた形をしています。
プログラム中で使うのなら、「先頭の連続する . 」にマッチさせ、その長さを求めればいいのですが、
強調設定用だと、一つずつパターンを記述することになります。
そのパターンは次の通りです
(1) . 1つ
(1-1) 「.」 だけ
(2-2) 「.」 の直後に 「.でない文字」 が有り、
(2) . 2つ
(2-1) 「..」 だけ
(2-2) 「..」 の直後に 「.でない文字」 が有り、
(3) . 3つ
(3-1) 「...」 だけ
(3-2) 「...」 の直後に 「.でない文字」 が有り、
これを
強調1 : (1-1)のパターン
強調1 : (1-2)のパターン
強調2 : (2-1)のパターン
強調2 : (2-2)のパターン
強調3 : (3-1)のパターン
強調3 : (3-2)のパターン
と設定すれば、それぞれに色分けされます。
今、手許に秀丸が無いので、確認まではできないのですが。
^[\.?].*
の[] の中では、各種特殊記号は、特殊な意味を持たなくなります。( ヘルプを参照のこと )
「.」 は「任意の一文字」という意味を失い、ただの「. という文字」になります。
なので、 現状では? は「?と言う文字」になり
?なんのこと?
にも該当するはずです。
※ 例外は \ と ] です。 \. が「 \と.」と解釈されるのか、エスケープされて「.」と解釈されるのかは、確認できてません。
また、「特殊文字としての . 」 は「通常文字 . 」にもマッチするので、「..こんばんにゃ」は
[\.?]にマッチ: .
.*にマッチ: .こんばんにゃ
となります。これを防ぐには、 今 .* を使っている部分を、 「. で始まらない」と変える必要があります
合せると
^\.[^.].*$
これが、(1-2)のパターンです。
後ろに続かない
^\.$
が(1-1)です。
No.3
- 回答日時:
コロン” . ”1個だけで始まる文の場合
^[\.](?!\.).*
または
^[\.]{1}(?!\.).*
コロン” . ”2個だけで始まる文の場合
^[\.]{2}(?!\.).*
コロン” . ”3個だけで始まる文の場合
^[\.]{3}(?!\.).*
否定的先読みで指定した回数以上のコロンがないものを検索します。
No.4ベストアンサー
- 回答日時:
No.3の回答者です。
No.2の回答者さんが指摘されたようにコロンではなくピリオドですね。
回答の一部に質問文をコピペしているので、確認しないで回答に利用
していました。
正しくは
ピリオド” . ”1個だけで始まる文の場合
^[\.](?!\.).*
または
^[\.]{1}(?!\.).*
ピリオド” . ”2個だけで始まる文の場合
^[\.]{2}(?!\.).*
ピリオド” . ”3個だけで始まる文の場合
^[\.]{3}(?!\.).*
でしたね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセル 関数について質問です。 2 2022/10/03 11:14
- PHP PHPの構文で間違えが分からない 5 2022/07/11 16:38
- その他(プログラミング・Web制作) テキストエディタで複数行にわたる文字列の行頭に番号を振る方法 4 2023/03/11 12:57
- PHP SQLとPHPの連結方法がわからないのでアドバイスお願い致します 1 2022/07/12 12:16
- Excel(エクセル) LEFT関数で文字数を指定しないで取りだす方法 7 2023/06/30 09:49
- その他(データベース) カラム上の重複を削除するクエリを教えてください 3 2022/04/12 14:11
- Excel(エクセル) capeofdragonと申します Excel2016を使っておりまして 半角又は全角の任意文字列が 2 2022/10/31 13:51
- Excel(エクセル) MID関数について 2 2022/04/22 09:13
- その他(プログラミング・Web制作) プログラミング pythonの問題について 2 2022/04/19 00:41
- その他(SNS・コミュニケーションサービス) よくヨーロッパの人達って文面に感情を足す時に :) とか ;( って顔文字使いますよね。 意味は分か 2 2022/12/06 12:45
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
金額にマッチする正規表現について
-
CSVファイルの中で、「 , 」カ...
-
VBA EXCEL あるセルの中の一...
-
住宅にカナを入力する際に丁目...
-
VBA 文字に半角が含まれて...
-
パイソンエラーについて
-
エクセルで数値を全角文字(カ...
-
pythonエラー
-
英数字のみ全角から半角に変換
-
GoogleAppsScript文字列置換の...
-
バッチファイルの正規表現を利...
-
マクロを使ってフォルダー内に...
-
パス区切りの文字について
-
CString から LPCTSTRの型に変換
-
「何とかで始まり、何とかで終...
-
VBA Shift-JISをJISに変換する...
-
全角入力
-
カンマ区切りの数字をCSVフ...
-
正規表現について
-
SJIS->UTF8->SJISコード変換に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
正規表現
-
コマンドプロンプトでのsedの使...
-
シェルスクリプト [[ $number =...
-
Perlで別ファイルから文字列の抽出
-
金額にマッチする正規表現について
-
正規表現のことで
-
リナックスの grepコマンド ...
-
この正規表現を教えて!
-
正規表現。行頭が○○以外にマッ...
-
アスタリスクを検索できません
-
正規表現 .+? について
-
sedの正規表現でグループ化する...
-
メールアドレスかどうかの
-
タグを削除する正規表現について
-
正規表現について VB6
-
言語ではなく、正規表現のみで...
-
CSVファイルの中で、「 , 」カ...
-
英数字のみ全角から半角に変換
-
エクセルで数値を全角文字(カ...
-
EXCELからCSVにすると余計なカ...
おすすめ情報
まとめてお礼します。
” . ” は 確かにコロンではないです。
スムーズに言い間違えると あとも釣られて間違うもんですよね(笑)
#1の回答へ
完全にはダメでした
#2の回答へ
同じ方法を考えていました
原理はわかるのですが、実際、その方法でもできましたが
#3方法がわかりやすかった
#3の回答
否定先読み というのがあるんですね。
おかげ様でシンプルで実現できました。
素早く解決でき、みなさんいろいろありがとうございました!