正規表現で コロン” . ”の連続をどう区別するか悩んでいます

例えば以下のような文字列
(行頭から始まる文章)
----------------------------------------

.おはよう   
..こんばんにゃ
...さよなら

----------------------------------------
コロン” . ”の連続を区別し、そして
文末まで全部取りこむ必要があるのが難しいところです

こうすると上の三行の例の全部が含まれてしまう
^[\.?].*

コロン” . ”1個だけで始まる文の
.おはよう だけ 文末まで取得

コロン” . ”2個で始まる文の
..こんばんにゃ を 文末まで取得

と区別したいときはどうしたらいいのでしょう?

説明するとややこしいのですが
用途は 秀丸のアウトラインの強調文字表現をしたいため

質問者からの補足コメント

  • まとめてお礼します。

    ” . ” は 確かにコロンではないです。
    スムーズに言い間違えると あとも釣られて間違うもんですよね(笑)

    #1の回答へ
    完全にはダメでした

    #2の回答へ
    同じ方法を考えていました
    原理はわかるのですが、実際、その方法でもできましたが
    #3方法がわかりやすかった

    #3の回答
    否定先読み というのがあるんですね。
    おかげ様でシンプルで実現できました。

    素早く解決でき、みなさんいろいろありがとうございました!

      補足日時:2017/03/19 22:01

A 回答 (4件)

No.3の回答者です。


No.2の回答者さんが指摘されたようにコロンではなくピリオドですね。

回答の一部に質問文をコピペしているので、確認しないで回答に利用
していました。

正しくは

ピリオド” . ”1個だけで始まる文の場合
^[\.](?!\.).*
または
^[\.]{1}(?!\.).*

ピリオド” . ”2個だけで始まる文の場合
^[\.]{2}(?!\.).*

ピリオド” . ”3個だけで始まる文の場合
^[\.]{3}(?!\.).*

でしたね。
    • good
    • 0

コロン” . ”1個だけで始まる文の場合


^[\.](?!\.).*
または
^[\.]{1}(?!\.).*

コロン” . ”2個だけで始まる文の場合
^[\.]{2}(?!\.).*

コロン” . ”3個だけで始まる文の場合
^[\.]{3}(?!\.).*

否定的先読みで指定した回数以上のコロンがないものを検索します。
「この正規表現を教えて!」の回答画像3
    • good
    • 0

まず最初に


「.」 は「ピリオド」です。「ドット」と呼ぶこともあります。
コロンは「:」です。ピリオドを縦に二つ並べた形をしています。


プログラム中で使うのなら、「先頭の連続する . 」にマッチさせ、その長さを求めればいいのですが、
強調設定用だと、一つずつパターンを記述することになります。
そのパターンは次の通りです
(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)です。
    • good
    • 0

以下でどうですか?



1個の場合
^\.[^\.]*

2個の場合
^\.\.[^\.]*
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aと関連する良く見られている質問

Q正規表現で、ある文末に不一致の抽出方法

文頭が必ず「abc」で始まり、且つ、文末が「def」でないものに一致させる正規表現の記述方法を教えてください。

たとえば、次のような場合、「三菱」で始まり、且つ、文末が「株式会社」でないものはNGのついた3つとなります。

三菱商事株式会社 ←OK
三菱銀行株式会社 ←OK
三菱商事有限会社 ←NG
三井商事株式会社 ←NG
株式会社三菱商事 ←NG

Aベストアンサー

正規表現メタ文字(正規表現演算子)
^:行頭
$:行末
.:任意の一文字
*:0回以上の繰り返し

^abc.*def$

Q秀丸マクロ =検索文字を文末まで置換=

秀丸エディタのマクロを使って以下の処理を行おうとしました。

1.検索した文字の一行下の行をコピーし、
  そのコピーした行末にコピーしたデータを貼り付ける。
2.最初に検索した文字に該当する次の文字の一行下の行をコピーし、
  そのコピーした行末にコピーしたデータを貼り付ける。
  (繰り返し。)
3.文末(EOF)まで2.の処理を繰り返す。

以下のマクロを作ってみました。

while(code != eof){
setcompatiblemode 15;
searchdown "検索文字" , hilight;
down 1;
copyline;
paste;
finddown;

すると、2.の処理まで正常に実行されるのですが、
検索文字がなくなった時点で2の処理がストップされる事がなく、
それ以降の行のすべてが文末(EOF)まで、コピー&ペーストの処理が
繰り返されます。

例:______________________________________________________
(元の文)
○○
×××
△△
■■■
○○
□□□□
☆☆

(検索する文字)
○○

(マクロ実行後の文)
○○
×××
×××
△△
■■■
○○
□□□□
□□□□
☆☆
☆☆
______________________________________________________

上記の例でいうと、(元の文)の☆☆の部分が、(マクロ実行後の文)で
☆☆
☆☆
となってしまってます。
この部分を
☆☆
のままにしたいのです。

マクロをどのように組めば実現できるのでしょうか。
よろしくお願いします。

秀丸エディタのマクロを使って以下の処理を行おうとしました。

1.検索した文字の一行下の行をコピーし、
  そのコピーした行末にコピーしたデータを貼り付ける。
2.最初に検索した文字に該当する次の文字の一行下の行をコピーし、
  そのコピーした行末にコピーしたデータを貼り付ける。
  (繰り返し。)
3.文末(EOF)まで2.の処理を繰り返す。

以下のマクロを作ってみました。

while(code != eof){
setcompatiblemode 15;
searchdown "検索文字" , hilight;
down 1;
copyline;...続きを読む

Aベストアンサー

以下のようにしてください
----------------------------------------------------
setcompatiblemode 15;
//ファイルの先頭へ移動(カーソルがどこにあっても良いようにするため)
gofiletop
searchdown "検索文字" , hilight;
while(1){
if (result == 0) { break;}
//行頭へ移動(しないと正しくコピーできない)
golinetop;
down 1;
copyline;
paste;
finddown;
}
------------------------------------
不明点は、聞いてください。動作確認済みです。

Qプログラミングに関する質....

プログラミングに関する質問です。
↓↓ツクローアドベンチャー2↓↓
http://www.shiftup.jpn.org/flash/game2/game.html
の様なWEB上でゲームが作れるプログラミングツールを作るには、
どうすれば良いでしょうか?????
回答、宜しくお願い致します。

Aベストアンサー

リンク先のツールはFlashで作成されているみたいですね。

他にもCGIとかJava(アプレット)などでも作成することもできると
思いますが、ちゃんとしたツールとして仕上げるのは結構難しいです。

Q.xaの拡張子とビデオクリップなんですが...

友達からもらったファイルに
.xaの拡張子のファイルがあったんですが
聞いたこともないファイルで全然わかりません
それと一緒にビデオクリップのファイルなんですが
DivX502BundleやDivXPro502GAINBundle、BSPlayer
Windows Media Playerを使っても開けないのがあるんですがどうやったら開けるのでしょうか?
友達ももらいものでよくわからないそうですが
気になって...
どなたかお願いします助けてくださいm(_ _)m
PC初心者なんですいません...

Aベストアンサー

.xaはプレイステーションの音声形式ファイルです。
しかし友達に開き方を聞けばいいのに…。
MXなどで違法に入手した感じがします。

QWindowsでS.M.A.R.Tの情報取得するAPIってある?

Windows2K上でハードディスクのSMARTの情報を取得するAPIってありますか?

Aベストアンサー

あまり詳しくはないのですがそのものズバリのWin32APIの関数はないでしょう。
BIOSにアクセスするのでDeviceIoControl関数を使うしかないかと。

IOCTL_STORAGE_PREDICT_FAILURE
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/storage/hh/storage/k307_396b070a-af8a-4271-9d17-efb385869570.xml.asp


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報