質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

Q&A

解決済

4回答

2324閲覧

特定の文字で挟む正規表現

LUCIA

総合スコア20

正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

0グッド

0クリップ

投稿2018/07/11 10:09

編集2018/07/11 10:29

正規表現において、
検索→^
置換→★
とすると、行頭に★が挿入され、
検索→$
置換→★
とすれば、行末に★が挿入されると思いますが、この2つの処理を同時にする(行頭と行末が任意の文字で挟まれる)正規表現はどう書けばよいのでしょうか?

例えば、
テスト

★テスト★
という実行結果が欲しいです。

検索→^(.)$
置換→★(.
)★
としたら、中にある文字まで記号に変わってしまいました。

主に、カギカッコやhtmlタグの挿入を目的としています。なにか良い案がありましたらぜひお力をお貸しください。宜しくお願いいたします。

追記:Androidのテキストエディタ【jota】で作業しています

https://play.google.com/store/apps/details?id=jp.sblo.pandora.jota.plus

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

KojiDoi

2018/07/11 10:23

osは? プログラムは?
LUCIA

2018/07/11 10:30

大事な情報を書いていませんでした。正規表現の使える、Androidのテキストエディタを使っています。
guest

回答4

0

正規表現はマッチするまでが仕事で、置換するとかしないとかは正規表現の範囲外で、エディタとかプログラミング言語固有の機能です。
jotaは使ったこと無いので知りませんが、多くの言語では、replace(/^(.*)$/,'<p>\1</p>')のように、正規表現の中の括弧内を置換文字列の中で参照できます。\1だったり$1だったり。

投稿2018/07/11 13:33

otn

総合スコア84505

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

★テスト★

検索: ^|$ 置換: ★

<p>テスト</p>

これが、<p>テスト</p>としたい場合には、文字がそれぞれ違うので、やっぱり2ステップ必要ですよね…?

そういう場合は、1回で置換します。

検索: ^(.*)$ 置換: <p>\1</p>

しかし、Jotaでは \, $ がメタキャラクタではないようなので、この方法はおそらく使えません。
Jota作者に正規表現による置換処理で変数にキャプチャする方法がないか質問して下さい。
なければ、要望を出すのもいいと思います。

Jotaで何かおかしい時は、

アンドロイドマーケットのレビューコメントに何か書いても作者は対応いたしません。

問題の解決を望むのであれば、作者にメールしてください。

他のテキストエディタを使う

検索: (.+) 置換: <p>$1</p>

使用できる正規表現パターンはJavaに準じるので、一通りは使えそうです。

Re: LUCIA さん

投稿2018/07/11 12:06

編集2018/07/13 23:46
think49

総合スコア18162

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

LUCIA

2018/07/11 12:52

コメントありがとうございます! 挟む文字が行頭行末同じ場合には、ご提示いただいた方法でできました! これが、<p>テスト</p>としたい場合には、文字がそれぞれ違うので、やっぱり2ステップ必要ですよね…?
think49

2018/07/11 23:52

> これが、<p>テスト</p>としたい場合には、文字がそれぞれ違うので、やっぱり2ステップ必要ですよね…? それを質問文に書いてください。 質問文ては★になっています。
think49

2018/07/12 03:32

親記事に追記しました
LUCIA

2018/07/12 09:11

回答と追加質問への補足、ありがとうございました。例示がわかりづらくてすみません。 結局、このアプリでは後方参照ができないようです。開発者の方にフィードバックを出しておきました。
think49

2018/07/13 03:37

私なら他のテキストエディタに乗り換えることを検討します。 親記事に追記しました。
LUCIA

2018/07/13 11:35

追記ありがとうございます! 代替として提示されたソフトウェア、端末にインストールしてあったものでした。(有料版を持っています) 以前試したとき、正規表現を使う、にチェックを入れてもきちんとヒットしてくれなかったので、一度さじを投げてしまったのですが、きちんと設定すれば使えそうですね。頑張ってみます
LUCIA

2018/07/13 11:59

使ってみました! 一応、文が一行のみのときはきちんと動作するようです。 しかし、複数行に渡る文になると、最初の一文にしか検索がヒットしませんでした。 多分改行コードの問題とは思うのですが…なかなか難しいですね。
think49

2018/07/13 13:10

ああ、QuickEdit は修飾子のスイッチが出来ないようですね。 ^$が改行コードの境界にマッチしないので、工夫して下さい。 親記事を修正しました。
LUCIA

2018/07/13 13:21

追記をありがとうございます。 この方法でうまく行きました! おそらく…検索の対象になっている(.+)は、一文字以上の文字列、つまり文字のある行を指すということですね。空行には反応しないようになっているので… そして、検索でヒットしたものを$1で捕まえて、前後に文字を代入する、という流れであっていますでしょうか。
think49

2018/07/13 23:50

> おそらく…検索の対象になっている(.+)は、一文字以上の文字列、つまり文字のある行を指すということですね。 . の認識が違います。 改行も文字の一種ですよ。 作者HPからリンクされているJavaのリファレンスページを確認して下さい(親記事でもリンクしてます)。 > そして、検索でヒットしたものを$1で捕まえて、前後に文字を代入する、という流れであっていますでしょうか。 こちらは合っています。
LUCIA

2018/07/14 00:05

改行や空白も一文字とみなすのですね。 リファレンス日本語版もつけていただきありがとうございました。時間をかけて勉強していきたいと思います!
LUCIA

2018/07/16 08:04

相談にたくさん乗ってもらえて助かりました!ベストアンサーとさせていただきました。
guest

0

検索の置換モード
https://sites.google.com/site/aquamarinepandora/home/jota-text-editor-ja/menuja#TOC--21

正規表現の後方参照には対応していません。

ということでできません。マクロも使えないので現状では無理ですね。
別のアプリを使ってみてはどうでしょうか?

投稿2018/07/12 04:41

x_x

総合スコア13749

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

LUCIA

2018/07/12 08:59

コメントありがとうございます!きちんと書いてあったのですね、見落としていました。 要望として出しては見ますが、同時に、別アプリの使用も考えたいと思います。
guest

0

ちょっと趣旨とは外れますが、改行文字を検索可能なエディタであれば、
検索:改行文字
置換:[行末追加文字]改行文字[行頭追加文字]

とすると、先頭行と最終行を除く行はうまく置換されますね。
※正規表現での置換が出来ない場合はよくやります

投稿2018/07/11 23:55

tacsheaven

総合スコア13703

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

LUCIA

2018/07/12 09:08

コメントありがとうございます。 どうもこのエディタでは後方参照ができないようですので、ご提示いただいた方法が役立つかもしれませんね、試してみます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問