- ベストアンサー
正規表現について 連続する数字以外
3文字の数字以外で終わる行を探したいと考えています。 エディタで正規表現を用いた置換を行いたいと考えております。 例) 123 ヒットしない 12m ヒットさせたい 1/2 ヒットさせたい a12 ヒットさせたい aaa ヒットさせたい 例えば [^0-9]{3}\n だとNGだと思いますが、どのように記述すれば良いでしょうか? よろしくお願いいたします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
3文字の中のどこかに、1文字でも数字以外があればいいのであれば、 [^0-9].{2}$|.[^0-9].$|.{2}[^0-9]$ でいいのでは。
その他の回答 (4)
- Tacosan
- ベストアンサー率23% (3656/15482)
回答No.5
サクラエディタで (否定) 先読みはできそう. 後読みは... 鬼車を使えばできるか?
- ORUKA1951
- ベストアンサー率45% (5062/11036)
回答No.4
Perlでしたら (?<!>....) 後読みアサーションが失敗すれば[真]を使いますけど・・ while(<DATA>){ s/^(.*(?<!\d{3}))$/ヒットしたので置換したよ/g; print; }
- めとろいと(@naktak)
- ベストアンサー率36% (785/2139)
回答No.3
じゃあこれで。 (?=.*[^0-9]).*$
- Tacosan
- ベストアンサー率23% (3656/15482)
回答No.2
その「エディタ」でどんな正規表現が使えるかによるような気がする. 否定先読みが使えれば簡単... かなぁ? あと, 実は「3文字の数字以外で終わる行」といったときに「1文字ないし 2文字しかない行」があるかどうか, そしてそれらにヒットさせるかどうかも問題になるかもしれん.
質問者
お礼
ありがとうございます。 現在は sakuraエディタ を使っています (もっと便利なエディタがあれば変更可能です) 「1文字ないし 2文字しかない行」はありません。 もし、他のツールを活用した場合も含め、良い方法があれば教えてください。 よろしくお願いいたします。
お礼
ありがとうございます。 出来ました。 3文字ではなく5文字といった要件の場合、同じ考えでやると相当なパターン数になっちゃいますが、 何か他の方法はないでしょうか? よろしくお願いいたします。