
正規表現で コロン” . ”の連続をどう区別するか悩んでいます
例えば以下のような文字列
(行頭から始まる文章)
----------------------------------------
.おはよう
..こんばんにゃ
...さよなら
----------------------------------------
コロン” . ”の連続を区別し、そして
文末まで全部取りこむ必要があるのが難しいところです
こうすると上の三行の例の全部が含まれてしまう
^[\.?].*
コロン” . ”1個だけで始まる文の
.おはよう だけ 文末まで取得
コロン” . ”2個で始まる文の
..こんばんにゃ を 文末まで取得
と区別したいときはどうしたらいいのでしょう?
説明するとややこしいのですが
用途は 秀丸のアウトラインの強調文字表現をしたいため
No.4ベストアンサー
- 回答日時:
No.3の回答者です。
No.2の回答者さんが指摘されたようにコロンではなくピリオドですね。
回答の一部に質問文をコピペしているので、確認しないで回答に利用
していました。
正しくは
ピリオド” . ”1個だけで始まる文の場合
^[\.](?!\.).*
または
^[\.]{1}(?!\.).*
ピリオド” . ”2個だけで始まる文の場合
^[\.]{2}(?!\.).*
ピリオド” . ”3個だけで始まる文の場合
^[\.]{3}(?!\.).*
でしたね。
No.3
- 回答日時:
コロン” . ”1個だけで始まる文の場合
^[\.](?!\.).*
または
^[\.]{1}(?!\.).*
コロン” . ”2個だけで始まる文の場合
^[\.]{2}(?!\.).*
コロン” . ”3個だけで始まる文の場合
^[\.]{3}(?!\.).*
否定的先読みで指定した回数以上のコロンがないものを検索します。

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)です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
条件にマッチした行数のカウント
-
CSVファイルの中で、「 , 」カ...
-
住宅にカナを入力する際に丁目...
-
エクセルで数値を全角文字(カ...
-
全角英数字の必要性が理解できない
-
Excelについて質問です。 セル...
-
ダブルコーテーションの置換
-
データにカンマが入ったCSVデー...
-
Accessでのグループ化で全角・...
-
VBA 置換文字がみつからない時
-
正規表現で、特定の文字列を含...
-
IEからEdgeへの移行に伴うIMEの...
-
EXCELからCSVにすると余計なカ...
-
Excel VBAでPDFファイルをMicro...
-
文字コードの%E3%80%とは何です...
-
データグリッド内の数値をカン...
-
日本語文字列の指定長(byte)切出し
-
WORDで改ページすると時々グレ...
-
全角入力
-
ダブルクォーテーション置換時...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
マッチングアプリで新しくアカ...
-
正規表現
-
正規表現の実行レポートは作成...
-
タグを正規表現で完全に削除
-
この正規表現の意味は?
-
謎の半角■文字を正規表現で文字...
-
文字同士の比較~抜き出し
-
文字のマッチングについて
-
Perlで別ファイルから文字列の抽出
-
/ [ 【 の文字をマッチさ...
-
置き換えについて
-
正規表現 \\b123bと^123$は同じ?
-
perlで記号除去を行いたいので...
-
リナックスの grepコマンド ...
-
正規表現で2種類ある括弧を区別...
-
記号とあらば、1文字でも全て...
-
perlのマッチでマッチしたい物...
-
正規表現の展開
-
パイプ以外をエスケープしてマ...
-
3回以上連続する文字(どんな...
おすすめ情報
まとめてお礼します。
” . ” は 確かにコロンではないです。
スムーズに言い間違えると あとも釣られて間違うもんですよね(笑)
#1の回答へ
完全にはダメでした
#2の回答へ
同じ方法を考えていました
原理はわかるのですが、実際、その方法でもできましたが
#3方法がわかりやすかった
#3の回答
否定先読み というのがあるんですね。
おかげ様でシンプルで実現できました。
素早く解決でき、みなさんいろいろありがとうございました!