dポイントプレゼントキャンペーン実施中!

X,Y,Z座標の羅列などを対象にX座標の抽出をやりたいと思っています。

X[-]?\d+(\.\d+)?
一応上記のように作成してみたのですが、
以下のような内容だとヒットしない部分があります。

X-.818
X.626
X19.

ちなみに通常は
X-38.697Y.996
X-35.041Y16.508
G54G90G00X20.0Y15.0S2270T03
G99G81Z-5.5R2.0F227M08
Y45.0
X70.0Y60.0
X90.0Y45.0
このような羅列のなかで使用する予定です。
(いわゆるGコード)

ご存知の方、助言をお願いします。

A 回答 (4件)

こんにちは、No.2です。



なるほど、
小数点以下が選択されないということが確認できました。
秀丸エディタとサクラエディタでは正規表現の式の評価が異なるようですね。

小数点がある場合を先に評価する様にした以下は如何でしょうか。

X-?((\d+)?\.(\d+)?|\d+)


あと小数点が必ずつくのであれば

X-?(\d+)?\.(\d+)?

で良いかもしれません。
    • good
    • 0

No.2です。



> X24.519Y24.898
> こういう場合の小数点以下も選択されるようにしたいと考えています。

No.2の回答で選択されると思いますが如何でしょうか?
「X24.519」が選択されます。

ちなみに私はWindows上で秀丸エディタVer8.21の正規表現検索で動作確認しております。

ご使用のエディタ名や、
実際の例(希望する選択範囲と、実際に選択される範囲)を
具体的にご呈示いたけますと、より適切な回答ができると思います。

この回答への補足

申し訳ありません。
本当はテキストエディタで色分けをするために範囲選択をしようとしています。
windowsでサクラエディタを利用しています。

X座標、Y座標、Z座標、その他 といった具合に色分けをしようとしているため
X座標が選択された際にY座標の内容選択を避ける形にしないと色が変えられないといった
具合になっています。
(面倒なことを色々いってすいません。
ほぼ独学のためとても未熟な知識の上、自分の説明が足りていないです。)

たとえば
X-.392Y36.736
だと
X-.392 と Y36.736 を色分けしたいので
別々の正規表現を利用しようとしています。
(Xの探し方がわかればYも置き換えるだけだろうと思ったため
最初は題名のような質問をしました。)

以下の様な内容を色分けしようとしています。
X33.12Y18.317
X34.562Y17.466
G05P0
G0Z335.37
X35.044Y-16.502
X-1.83Y34.097
X-1.671Y34.022
X-.146Y33.303
X20.629Y25.696
X-2.003Y33.626
X-1.885Y33.57
X-.339Y32.841
X20.479Y25.219
G0Z335.37
X12.Y-36.803
Z308.37
X-2.136Y37.29
X-.787Y36.922
X-.392Y36.736
X1.012Y36.074

補足日時:2014/03/12 00:16
    • good
    • 0

こんにちは


こんなかんじで如何でしょうか?

X-?(\d+|(\d+)?\.(\d+)?)

今回の場合は、もっと単純に

X-?[\.\d]+

でも良いかもしれません。
    • good
    • 0
この回答へのお礼

ありがとうございます。
質問の内容を満たしていたのであなたの回答は完璧でした。

X24.519Y24.898
こういう場合の小数点以下も選択されるようにしたいと考えています。
↑自分の質問の仕方が悪かったです。
申し訳ない。

お礼日時:2014/03/09 22:51

3つ目はそれほど難しくないんじゃない?



あと, 1つ目や 2つ目をとる正規表現は書けるかな?

それにしても, [-] って書き方, どこで習うんだろ....

この回答への補足

個人的には一つ目が難しいと思っています。
小数点と異符号が同時に来るだけならとれるんですが、
数字がくるパターンなどもあるためわけがわかりません。
あと末尾情報の区切りも.で終わる場合や数字で終わる場合があります。
他の英文字が来る場合はよいのですが・・・
検索をかけた際に全選択させたいのではなく、
部分選択させたいため、非常に苦労しています。
(テキストエディタで色分けさせようという考え)
2つ目はなんとかなります。
余裕があるようでしたら助言をお願いします。

補足日時:2014/03/09 22:57
    • good
    • 0

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