[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 2chのread.cgiへ]
Update time : 02/13 08:03 / Filesize : 135 KB / Number-of Response : 546
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

正規表現 Part10



1 名前:デフォルトの名無しさん [2012/06/23(土) 01:38:40.22 ]
正規表現(Regular Expression)スレです。

質問する場合は必ず実装言語や処理系ソフトウェア名を示してください。

正規表現 Part9
toro.2ch.net/test/read.cgi/tech/1323566370/

天ぷら等2以降

159 名前:デフォルトの名無しさん mailto:sage [2012/08/08(水) 12:19:38.47 ]
>>157
入れ子になった完全な<div> </div>のなかにあるデータというと
それはタグ(例えば<div>)を含んで構わないということかな。

160 名前:デフォルトの名無しさん mailto:sage [2012/08/08(水) 12:24:19.36 ]
>>159
はい大丈夫です

161 名前:デフォルトの名無しさん mailto:sage [2012/08/08(水) 12:45:43.22 ]
<div(?(R)[^>]*| class="test")>.*?(?R).*?<\/div>
PCRE だとこんな感じ?

162 名前:デフォルトの名無しさん mailto:sage [2012/08/08(水) 12:52:30.80 ]
スレチだけど素直にxpath。
$ xmlstarlet sel -t -m "//div[@class='test']/*" -c . -n

163 名前:デフォルトの名無しさん mailto:sage [2012/08/08(水) 12:54:38.43 ]
やっぱりperlじゃなくてPHPでお願いします。
正規表現が無理ならPHPの関数使ってでもいいです

164 名前:デフォルトの名無しさん mailto:sage [2012/08/08(水) 13:13:13.15 ]
>>161
まんまだと駄目で
(?R)*にしても  <div class="block">の閉じで終わってしまう。

165 名前:デフォルトの名無しさん mailto:sage [2012/08/08(水) 16:00:17.05 ]
PHPでお願いしますって言ってた質問もういいです。
preg_matchを繰り返せばなんとかとりたい部分だけ取れました。
ご迷惑おかけしました。

166 名前:デフォルトの名無しさん [2012/08/09(木) 03:48:44.49 ]
性器表現

167 名前:uy mailto:sage [2012/08/10(金) 18:07:28.45 ]
rubyの正規表現の質問です
連続して10回以上...無限にマッチさせる構文ってないですか?
/6{9}6+/
いまはこんな事をやっていますがもう少しスマートな書き方あれば教えて欲しいんですけど



168 名前:デフォルトの名無しさん mailto:sage [2012/08/10(金) 18:34:04.25 ]
>>167
/6{10,}/

169 名前:uy mailto:sage [2012/08/10(金) 18:36:37.17 ]
>>168
ありがとうございます

170 名前:デフォルトの名無しさん mailto:sage [2012/08/10(金) 18:38:34.97 ]
改行を含むながー文字列で先頭にタブ文字が入ってるやつがあります。
このタブだけにマッチするには、

^\t

でいいんでしょうか?

^\t$

こうかと思ったんですがこれだとマッチしませんでした。

171 名前:デフォルトの名無しさん mailto:sage [2012/08/10(金) 18:44:36.79 ]
>>170
>改行を含む

172 名前:デフォルトの名無しさん mailto:sage [2012/08/10(金) 18:46:38.61 ]
質問しなおします。

改行を含むながーい文字列があります。この文字列の中にはタブ文字も含まれています。

この文字列の一番先頭にタブ文字が紛れ込んでいるやつがあります。
これを除去したいんです。

PHPのpreg_replaceを使うとしたら、

preg_replace("/^\t$/","",$str);

こうですか?
これじゃマッチしませんでした。。

173 名前:デフォルトの名無しさん mailto:sage [2012/08/10(金) 19:34:43.94 ]
>>172
それは多分タブ文字しか含まない文字列にのみマッチする。
長いだっのか。ちゃんと書こう。

174 名前:デフォルトの名無しさん mailto:sage [2012/08/10(金) 20:55:35.73 ]
文字列の先頭しか必要ない話なのに、文字列が改行含むかどうかが関係するのか?
それとも文字列には複数行が含まれていて、
そのどの行の先頭でも同じ変換をしないといけないわけなのか?

175 名前:デフォルトの名無しさん mailto:sage [2012/08/10(金) 21:07:25.04 ]
>>174
それは$strに代入したあなたに聞いて。
あなたの書いた正規表現は文字列の1文字目がタブで、それが文字列の最後の文字だということ。つまり文字列が1文字でかつタブという正規表現。必要ないと言っても、必要としているスクリプトになってるから。

176 名前:デフォルトの名無しさん [2012/08/10(金) 21:27:21.32 ]
私は>>174じゃありません

>>174
なんか正規表現の中で文字列の先頭を改行の後とみなすやつがあったので一応書いておきました。
もしそいつにもマッチしたら困るので


>>175
じゃあ最初の文字だけにマッチさせるにはどうしたらいいですか?
とにかく先頭にタブ文字がある文字列をピックアップしたいんです。
あ、じゃあsubstrで一文字取って、調べりゃいいですね。

皆さんありがとうございました。

177 名前:デフォルトの名無しさん mailto:sage [2012/08/10(金) 21:32:17.10 ]
正規表現でやりたきゃ$が不要。
しかし正規表現必要ないな。



178 名前:デフォルトの名無しさん [2012/08/11(土) 06:43:50.15 ]
>>176
PHPのは知らないけどPerlの正規表現では^は正規表現フラグm(マルチライン)が有効になってると、
^が文字列先頭以外にも改行直後(行頭)にもマッチしてしまうので、
正規表現フラグ関係なく、改行が含まれるかもしれない文字列の先頭のみにマッチさせたい場合は、
\Aを使うべし

179 名前:デフォルトの名無しさん mailto:sage [2012/08/11(土) 14:09:27.76 ]
t

180 名前:デフォルトの名無しさん mailto:sage [2012/08/11(土) 14:17:57.80 ]
>>178
そういう回答求めてました
ありがとうございました

181 名前:デフォルトの名無しさん mailto:sage [2012/08/11(土) 16:22:33.21 ]
全体が10文字以内でaとbとcをこの順番に含むパターンってどうかきますか?

182 名前:デフォルトの名無しさん mailto:sage [2012/08/11(土) 16:40:58.70 ]
>>181
プログラムを使えるなら楽なんだが… たぶん、正規表現だけってことだよねぇ

183 名前:デフォルトの名無しさん mailto:sage [2012/08/11(土) 16:44:12.55 ]
xxx/abc/dfg/hij
xxx/abc/hij
この二つの文字列にマッチさせるようにするにはどうしたらいいでしょうか?

184 名前:デフォルトの名無しさん mailto:sage [2012/08/11(土) 16:50:11.71 ]
>>183
「/abc/」を含む文字列すべて、ならこれでどうでしょうか?

.*/abc/.*

185 名前:デフォルトの名無しさん mailto:sage [2012/08/11(土) 16:52:50.83 ]
xxx/abc/(dfg/)?hij で行けそうな


186 名前:デフォルトの名無しさん mailto:sage [2012/08/11(土) 17:19:33.04 ]
>>184
>>185
ありがとうございます

187 名前:デフォルトの名無しさん [2012/08/11(土) 19:03:41.15 ]
>>181
> 全体が10文字以内でaとbとcをこの順番に含むパターンってどうかきますか?
.*a[^c]*b[^a]*c.* と .{3,10} の肯定先読みか肯定戻り読みを合体させれば、
できるんじゃないかしら?

もっとも「1qabbbcd90」とか「aあbいbc」みたいなaとcに囲まれるbの個数が2個以上はNGで
1個限定ということなら前者の正規表現も更にカスタマイズが必要になるけど



188 名前:デフォルトの名無しさん mailto:sage [2012/08/15(水) 05:04:21.31 ]
emacs-lispの正規表現でわからない点があるので教えてください。

Cソースコードの
#define
プリプロセッサにマッチさせるための正規表現で下記が良く使われているのですが

"^\\s-*#\\s-*define"

-
↑のマイナスって意味ってありましたっけ?
www.kt.rim.or.jp/~kbk/regex/regex.html
とかみてもそれらしいのが見つからないのですが・・・

#defineに一致させるためなのであれば
行頭のスペース任意数以上(0〜N回)#スペース任意数(0〜N)define
なので

"^\\s*#\\s*define"

とかで良いきがするのですが・・


189 名前:デフォルトの名無しさん mailto:sage [2012/08/15(水) 07:43:45.93 ]
>>188
もう emacs 使ってないので、はずしてるかもしれないけど

EmacsLispの正規表現「\s」は空白文字類じゃない。
d.hatena.ne.jp/holidays-l/20070602/p1

じゃないの?

190 名前:デフォルトの名無しさん mailto:sage [2012/08/15(水) 08:18:54.14 ]
>>189
> >>188
> もう emacs 使ってないので、はずしてるかもしれないけど
>
> EmacsLispの正規表現「\s」は空白文字類じゃない。
> d.hatena.ne.jp/holidays-l/20070602/p1
>
> じゃないの?
え・・・
マジすか・・
確かにコレなら上の構文は納得です。

ありがとうございました。

191 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 19:24:13.57 ]
javaですが、日本語などの全角文字を探す場合、ascii以外という発想で「[^\p{ASCII}]」や「.*[^ -~].*」を使っていますが、
もっとスマートな別な表現はあるでしょうか?

192 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 20:43:41.61 ]
>>191
java.lang.Character.UnicodeBlockで定義されてるものは使えるそうだけど。
全角というのは表示上のことだし、日本語で使うという風にも区切られていない。
HIRAGANA KATAKANA KANJIとかすると半角カナとかも含まれそう。

193 名前:デフォルトの名無しさん mailto:sage [2012/08/17(金) 00:29:42.79 ]
ambiguousとかどうするよ?
わざわざ前後の文脈までみるのか?

194 名前:デフォルトの名無しさん [2012/08/17(金) 13:40:24.55 ]
ruby初心者でテキスト処理初心者です
以下のテキストから「かきくけこ」を抜き出したいです
=テキスト=
(1)あいうえお
→かきくけこ
(2)さしすせそ
.scan(/あいうえお(.*?)さしすせそ/m)と書くと「→」と「(2)」が邪魔です
.scan(/あいうえお\n→(.*?)(2)さしすせそ/m)と書くと何も取り出せません
なぜうまくいかないのでしょうか

195 名前:デフォルトの名無しさん mailto:sage [2012/08/17(金) 13:46:06.59 ]
カッコをエスケープしてないから \(2\)

196 名前:デフォルトの名無しさん mailto:sage [2012/08/17(金) 13:51:05.45 ]
なるほど!ありがとうございます

197 名前:デフォルトの名無しさん mailto:sage [2012/08/17(金) 13:58:31.90 ]
.scan(/あいうえお\n→(.*?)\(2\)さしすせそ/m)にしても何も取り出せませんでした…



198 名前:デフォルトの名無しさん mailto:sage [2012/08/17(金) 15:10:47.81 ]
取り出し云々の前に、マッチするかよく確認するべきじゃないの。
例えばこんなの。
rubular.com/r/GfgQLaoQoT

199 名前:デフォルトの名無しさん mailto:sage [2012/08/17(金) 15:27:10.60 ]
急がば三回まわってワンとお鳴き

200 名前:デフォルトの名無しさん mailto:sage [2012/08/17(金) 15:32:56.75 ]
>>198
これだと>>197の書き方でうまくいく判定がされるのですが実際にプログラムを動かすとどこもマッチしないのです
\nのあたりに問題があるのでしょうか

201 名前:デフォルトの名無しさん mailto:sage [2012/08/17(金) 15:36:36.39 ]
その人は、うまくいかない例でやってみてどうよ?って聞いてるんだよ

202 名前:デフォルトの名無しさん mailto:sage [2012/08/17(金) 15:53:41.75 ]
できました!ありがとうございます

203 名前:デフォルトの名無しさん mailto:sage [2012/08/18(土) 23:12:39.31 ]
h?t?tps?://.+
という定義ではすべてのURLがマッチしますが
www.hogehoge.jpg
といった画像リンクは除外するようにする定義を教えてください
h?t?tps?://.+(?!jpe?g|png|gif|bmp)
としてもうまくいきませんでした

204 名前:デフォルトの名無しさん mailto:sage [2012/08/19(日) 03:23:09.41 ]
www.hogehoge.jpg
これが画像のURL??

まあそういう仕様ということで、こんな感じかな。
h?t?tps?:\/\/.+\.(?!(jpe?g|png|gif|bmp)(?=\s|$))[a-z]+(?=\s|$)

205 名前:デフォルトの名無しさん mailto:sage [2012/08/19(日) 08:17:42.50 ]
どんなURLだw

206 名前:デフォルトの名無しさん mailto:sage [2012/08/19(日) 09:15:56.05 ]
自分だったら複数回grepで実現するかな。

欲しい拡張子以外を、順次消していく(該当行を\r\nに置換)

207 名前:デフォルトの名無しさん mailto:sage [2012/08/19(日) 09:52:20.64 ]
先読みと後読みを勉強すれば解決するな



208 名前:デフォルトの名無しさん mailto:sage [2012/08/19(日) 17:26:30.66 ]
zasshi.news.yahoo.co.jp/article?a=20120819-00000784-davinci-ent
こういったURLにはマッチしないんですかね
ここで調べました
PHP正規表現チェッカー ver1.0.3
www.rider-n.sakura.ne.jp/regexp/regexp.php

209 名前:デフォルトの名無しさん mailto:sage [2012/08/19(日) 20:08:06.25 ]
>>208
最初から十分な希望例を挙げて欲しいんだけど。おかしな例じゃなくてね。
環境も分からないし。テンプレ>>1-4も読んでね。
h?t?tps?:\/\/.+\.(?!(jpe?g|png|gif|bmp)(?=\s|$|\?))[^.\s]+(?=\s|$)

>PHP正規表現チェッカー ver1.0.3
これは正しく動作してるように思えない。以下をオススメする。
www.rexv.org/
rubular.com/
www.gethifi.com/tools/regex

210 名前:デフォルトの名無しさん mailto:sage [2012/08/19(日) 20:13:46.87 ]
正しく動いていないというのはどういうところ?

211 名前:デフォルトの名無しさん mailto:sage [2012/08/19(日) 20:38:31.91 ]
>>209
分かりました
スレ汚しすみませんでした

212 名前:デフォルトの名無しさん mailto:sage [2012/08/22(水) 17:33:42.49 ]
「$」の直前に「'」がなく、さらに「$」よりも前に「#」が一切ない正規表現ですが、
以下だとエラーになってしまいます。

 (?<!^[^#]*)(?<!')\$

上記の正しい正規表現を教えていただけないでしょうか?

213 名前:デフォルトの名無しさん mailto:sage [2012/08/22(水) 17:53:09.25 ]
[^#]*[^,#]\$
では駄目かどうか教えて。

214 名前:デフォルトの名無しさん mailto:sage [2012/08/22(水) 17:55:35.22 ]
>>213
…すんません、ありがとうございます。
なんてばかだったか…

ちなみに戻り読み否定で「#.*」は使えないのでしょうか?

215 名前:デフォルトの名無しさん mailto:sage [2012/08/22(水) 18:04:00.12 ]
可変長否定戻り読みとなると、使える環境は限られます

216 名前:デフォルトの名無しさん mailto:sage [2012/08/24(金) 15:14:46.73 ]
簡単な質問かも知れませんがお願いします

「家具」を消すには /(家具)/ ですが
あくまでも例えですが「木目調家具」は消したくない場合はどのように書けばいいのでしょうか

217 名前:デフォルトの名無しさん mailto:sage [2012/08/24(金) 18:57:17.56 ]
>>216
少し上のレスにもある否定戻り読みを使って
(?<!木目調)家具



218 名前:デフォルトの名無しさん [2012/09/11(火) 07:26:49.98 ]
青空文庫の注記をエディタ類の置換でやろうと思うのですが

なんとか吹喋[#「喋」に「ママ」の注記]かんとか
   ↓
なんとか吹<ruby><rb>喋</rb><rp>(</rp><rt>ママ</rt><rp>)</rp></ruby>かんとか


\1[#「([^「」]+?)」に「([^「」]+?)」の注記]
とか後方参照は出来るエディタは無かったですね

やっぱり スクリプト組むしかないのかな

219 名前:デフォルトの名無しさん [2012/09/11(火) 16:55:28.27 ]
オートマトンって何ですか?

220 名前:デフォルトの名無しさん mailto:sage [2012/09/11(火) 19:00:49.57 ]
殴投魔団

221 名前:デフォルトの名無しさん mailto:sage [2012/09/11(火) 19:39:19.44 ]
状態機械
ja.wikipedia.org/wiki/%E6%9C%89%E9%99%90%E3%82%AA%E3%83%BC%E3%83%88%E3%83%9E%E3%83%88%E3%83%B3

222 名前:デフォルトの名無しさん mailto:sage [2012/09/12(水) 03:32:54.57 ]

https://example.com/(abcABC123)/apple/(123456)
にはマッチして
https://example.com/(abcABC123)/apple/(123456)/orange/1
にはマッチしない、定義を教えてください。
()内は変動します。
https?://example\.com/[^/]+/apple/\d+
ですと、両方マッチするみたいですが、上だけにマッチするように手直しよろしくお願いします。

223 名前:デフォルトの名無しさん mailto:sage [2012/09/12(水) 04:08:54.24 ]
最後に $ を付ける?

224 名前:218 mailto:sage [2012/09/12(水) 07:13:43.25 ]
結局 >>218 はWSH(VB)で

s = rfp.ReadText
  Set regEx = New RegExp
  Set reg2 = New RegExp
  regEx.Pattern = "[#「([^「」]+)」に「([^「」]+)」の注記]"
  regEx.Global = True
  Set Matches = regEx.Execute(s)
  For Each Match in Matches
  d1 = regEx.Replace( Match.Value,"$1" )
  d2 = regEx.Replace( Match.Value,"$2" )
  d = d1+ Match.Value
  reg2.Pattern =d
  s = reg2.Replace( s , "<ruby><rb>"&d1&"</rb><rp>(</rp><rt>"&d2&"</rt><rp>)</rp></ruby>")
  Next
wfp.WriteText s

とやりました

225 名前:デフォルトの名無しさん mailto:sage [2012/09/12(水) 07:32:51.85 ]
>>224
ていねいな報告、ご苦労さまです。

226 名前:デフォルトの名無しさん mailto:sage [2012/09/12(水) 08:48:10.11 ]
マッチさせた部分文字列が後にあるから、2度読みしないとたぶん無理だと思うからスクリプトで処理して正解だと思うよ

227 名前:デフォルトの名無しさん mailto:sage [2012/09/12(水) 14:29:55.98 ]
>>223
ありがとうございます



228 名前:デフォルトの名無しさん mailto:sage [2012/09/15(土) 01:57:30.02 ]
すみません、質問させて下さい

一括ファイル整理ソフト:Classifier
ttp://realize.jounin.jp/classifier.html

こちらのソフトを使い、正規表現で大量にあるファイルの整理を行おうとしております

【写真】[イベント名] [苗字名前] 詳細.jpg

こういった形式のファイルに対して、苗字の頭一文字目が『あ行』なら
あ行のフォルダへ移動、『い行』ならい行のフォルダへ移動、という
処理をさせようと、以下の正規表現を入力し実行しました

【[^】]*】\[[^\]]*\]\s\[[亜-音][^\]]*\].*

結果を見ると、仕分けは実行されたのですが、あ行以外の苗字の方もあ行
フォルダへ仕分けされてしまいました。

こちらのソフトは開発環境がVisualBasicで、内部的には2バイトのUnicode規格に
基づいているせいで、シフトJISの漢字コード(音読み)で仕分けるにはこの正規表現
では駄目との事でした。

Unicodeの正規表現でシフトJISコードの亜-音と同じ結果が出せる正規表現方法は
無いでしょうか?もしご存知の方がいらしたら教えて下さい

よろしくお願いいたします

229 名前:デフォルトの名無しさん mailto:sage [2012/09/15(土) 04:46:24.97 ]
あるかないかで言えばあるけどそんな単純じゃないよ

230 名前:デフォルトの名無しさん mailto:sage [2012/09/15(土) 12:56:11.80 ]
ファイルが大量にあることは想像できました。
よくあるリネームではなく、特定フォルダーへの移動でしょ?
だったらdir結果をテキストエディターで1行ずつ
move ファイル名 読み仮名_あ_始まり\
って書いたら?

読みが「あ」で始まるかどうかは単なる漢字の音読み、訓読みでは判断できない場合が存在します。
人名だとどうしても人力で頑張るしかない場面だと思いましたがどうでしょうか。

自分だったら1,000人程度だったら空いた時間にしこしこ作業しますね。

231 名前:デフォルトの名無しさん mailto:sage [2012/09/15(土) 14:05:44.25 ]
migemoでふりがな取得出来ないかな…

232 名前:デフォルトの名無しさん mailto:sage [2012/09/15(土) 14:33:45.73 ]
>>231
kakashi

233 名前:デフォルトの名無しさん mailto:sage [2012/09/15(土) 19:45:32.48 ]
これかー
kakasi.namazu.org/index.html.ja

234 名前:デフォルトの名無しさん mailto:sage [2012/09/15(土) 19:56:55.37 ]
debianとかはパッケージに含まれてた気がする。<kakasi
hがあるかないかで良く見つからないけど。
文章をchasenで解析して単語をkakasiで読み順に並び替えてた記憶がある。

235 名前:デフォルトの名無しさん mailto:sage [2012/09/18(火) 10:21:00.35 ]
たとえば河野と書いて「かわの」さんも「こうの」さんもいるのでkakasiでも
どうにもならないと思うけどなぁ。割り切れるならいいけど。


236 名前:デフォルトの名無しさん mailto:sage [2012/09/18(火) 11:24:02.90 ]
お題はそんな読みを厳密にやる必要なくて、[亜-音]レベルの仕分けでいいんでしょ?

[亜唖娃阿哀愛(途中は略)音]って正規表現生成すれば?
Shift JISで↑こういう正規表現作ってから、(その方が生成プログラムが簡単なので)
Unicodeに変換すればいいよね。GUIのアプリなら、コピペするだけじゃないのかな?

237 名前:デフォルトの名無しさん mailto:sage [2012/09/18(火) 11:45:23.31 ]
コレだけだけど、ア行の苗字の1/10もない気がする
亜唖娃阿哀愛挨姶逢葵茜穐悪握渥旭葦芦鯵梓圧斡扱宛姐虻飴絢綾鮎或粟袷
安庵按暗案闇鞍杏以伊位依偉囲夷委威尉惟意慰易椅為畏異移維緯胃萎衣
謂違遺医井亥域育郁磯一壱溢逸稲茨芋鰯允印咽員因姻引飲淫胤蔭
院陰隠韻吋右宇烏羽迂雨卯鵜窺丑碓臼渦嘘唄欝蔚鰻姥厩浦瓜閏噂云運雲
荏餌叡営嬰影映曳栄永泳洩瑛盈穎頴英衛詠鋭液疫益駅悦謁越閲榎厭円 
園堰奄宴延怨掩援沿演炎焔煙燕猿縁艶苑薗遠鉛鴛塩於汚甥凹央奥往応押
旺横欧殴王翁襖鴬鴎黄岡沖荻億屋憶臆桶牡乙俺卸恩温穏音



238 名前:デフォルトの名無しさん mailto:sage [2012/09/18(火) 13:13:07.21 ]
あれま

239 名前:デフォルトの名無しさん mailto:sage [2012/09/18(火) 13:45:38.31 ]
こういう事例見ると、ファイル名に全角カタカナでフリガナを持っとくのも有りだな。

240 名前:デフォルトの名無しさん mailto:sage [2012/09/18(火) 21:08:24.29 ]
>>239
そのアイデア、正規表現関係ないけどファイル整理に便利そうだな。
いや、ファイル検索のときは正規表現使うから関係あるか。

241 名前:デフォルトの名無しさん mailto:sage [2012/09/18(火) 22:07:01.78 ]
ファイル名に頼らないで、一行目に漢字とカナとローマ字入れとくとか、dbに入れといた方がよさそうだ。

242 名前:デフォルトの名無しさん mailto:sage [2012/09/19(水) 12:04:10.79 ]
dbってlinuxコマンドのdb?

RDBMS(MySQLとかPostgreSQL)にファイル名用テーブルでも作っとけばいい感じはする。

243 名前:デフォルトの名無しさん mailto:sage [2012/09/19(水) 13:53:28.74 ]
>dbってlinuxコマンドのdb?

Berkeley DBのことか

244 名前:デフォルトの名無しさん mailto:sage [2012/09/19(水) 20:47:28.90 ]
複雑度によるけど、どっちでもいいんじゃない。ファイルシステムという単純なdbじゃ大変そうという話。

245 名前:デフォルトの名無しさん mailto:sage [2012/09/20(木) 01:32:09.66 ]
>235
ニホンゴムズカシイデスネ

246 名前:デフォルトの名無しさん mailto:sage [2012/09/21(金) 12:01:12.94 ]
>>245
英語でもPh-はF-と同じ発音だしKn-はしばしばKを発音しない。
読みで分類するからそういう問題に直面するわけで。
# じゃぁ読みで分類するのをやめようとなると、それはそれで別の問題があるけれど。

247 名前:デフォルトの名無しさん [2012/09/22(土) 23:39:02.10 ]
ちょっと質問、null文字を検索したら全部ヒットするんだっけ?



248 名前:デフォルトの名無しさん mailto:sage [2012/09/22(土) 23:56:11.73 ]
>>247の質問訂正
配列のデータすべてヒットさせるのは//ではなく/.*/の方がいいかな?

249 名前:デフォルトの名無しさん mailto:sage [2012/09/23(日) 00:03:06.22 ]
配列ってどの言語の配列よ?
>>4のテンプレに従って環境書こうぜ

250 名前:デフォルトの名無しさん mailto:sage [2012/09/23(日) 00:21:34.93 ]
>>249
ごめん、perlです

251 名前:デフォルトの名無しさん mailto:sage [2012/09/23(日) 00:27:38.76 ]
>>250捕捉
ActivePerl5.14.2で配列を検索で、全データをヒットさせたい場合は
空文字列を検索でも全データがヒットするけど、きちんと.*を指定したほうが
いいのかと思っての質問

単純にperl5の環境で空文字列を検索したら全データヒットと定義されてるのか疑問に思った

252 名前:デフォルトの名無しさん mailto:sage [2012/09/23(日) 23:49:39.15 ]
●正規表現の使用環境
Perl

●検索か置換か?
検索

●説明
文字列中の数字を配列の各要素に格納したい。以下のプログラムを作りました。
9がresultの先頭に入るのみなのです。このような場合splitを用いるのでしょうか?
$str = "TEST 0 1 2 3 4 5 6 7 8 9";
@result = $str =~ m/^TEST(?:\s(\d))+$/g;

253 名前:デフォルトの名無しさん [2012/09/23(日) 23:54:17.31 ]
>>252はPerlスレに現れた荒らし
条件後出しするわブログでもないのに自分の行動予定書いていくわのマジキチ
スルーよろ

254 名前:デフォルトの名無しさん mailto:sage [2012/09/23(日) 23:55:58.14 ]
>>253
情報サンクス。今真面目に回答書いて投稿前にリロードしたら書いてあって助かったよ。

ギリギリだったw

255 名前:252 mailto:sage [2012/09/23(日) 23:56:15.93 ]
別に荒らしのつもりじゃ無いので、判る人回答お願いします。

256 名前:デフォルトの名無しさん mailto:sage [2012/09/23(日) 23:57:09.54 ]
>>252に回答しても後から情報出されてどうこう言われる

257 名前:デフォルトの名無しさん mailto:sage [2012/09/23(日) 23:58:28.49 ]
一人粘着質のキチガイがいるけど気にしないでね



258 名前:デフォルトの名無しさん mailto:sage [2012/09/24(月) 00:04:52.12 ]
>>252
自分で荒らすだけじゃ飽きたらず向こうの荒らしまで連れてきたのかよ

本当に迷惑だな

社会からさっさと消えればいいのに

259 名前:デフォルトの名無しさん mailto:sage [2012/09/24(月) 00:07:30.59 ]
今まで質問しただけで、こんなに叩かれたことなかったんで…

260 名前:デフォルトの名無しさん mailto:sage [2012/09/24(月) 00:08:56.32 ]
死ねよカス

261 名前:デフォルトの名無しさん mailto:sage [2012/09/24(月) 00:13:39.12 ]
基地害>>252荒らしかた

暴れる奴の多いスレに釣り質問を投下する

条件を後だしする

初心者を免罪符にする

ブログ代わりにする

暴れてる奴がついてくるように次の行き先を明示

次のスレを荒らす←いまココ

262 名前:デフォルトの名無しさん mailto:sage [2012/09/24(月) 00:15:38.27 ]
>>259
ここはテメーの愚痴スレじゃねーぞ精神障害
どんなks親に育てられたんだコイツ

263 名前:デフォルトの名無しさん mailto:sage [2012/09/24(月) 00:28:11.86 ]
どうせ馬鹿が叩いてるだけだろうと思って一応回答は書き上げたが、
念のためにと思って元のスレ(どことは書かないけど分かると思う)
を見に行ってみたら、これは本物の釣りっぽいね。
どう見てもわざと煽ってるようにしか見えないし、万が一釣りじゃ
なかったとしても同じように後から注文つけられる可能性が高い。

264 名前:デフォルトの名無しさん [2012/09/24(月) 00:53:53.21 ]
>>252が荒らしじゃないなら本気で頭おかしいと思う

しかも自覚なさそうだからかなりヤバい

265 名前:デフォルトの名無しさん mailto:sage [2012/09/24(月) 11:49:11.40 ]
そういう時は、マルチと一言書くだけにしてください
個人的な感想はいらない

266 名前:デフォルトの名無しさん mailto:sage [2012/09/24(月) 13:29:22.30 ]
マルチっていうか、機能不全に陥ってるスレで質問しちゃった人が
むりくり荒らし認定する人に絡まれて逃げてきたら、
余計な人も付いてきちゃったという流れ

267 名前:デフォルトの名無しさん mailto:sage [2012/09/24(月) 13:40:32.31 ]
逃げるのにわざわざ行き先言って逃げるのか?w
どう考えても不自然



268 名前:デフォルトの名無しさん mailto:sage [2012/09/24(月) 14:02:19.45 ]
マルチと言ったら「はわわ」と返すのがマ板の流儀だと思っていた

269 名前:デフォルトの名無しさん mailto:sage [2012/09/24(月) 15:05:04.06 ]
???

ここはム板だぞ

270 名前:デフォルトの名無しさん mailto:sage [2012/09/24(月) 15:41:50.50 ]
NullPointerException

すまん

271 名前:デフォルトの名無しさん mailto:sage [2012/09/24(月) 15:57:54.50 ]
もうすぐ10がっ
www.youtube.com/watch?v=7sKs7INaEoA

272 名前:uy [2012/09/25(火) 03:48:48.13 ]
板全体の荒れ方がひどいな
あと人の集まってるC++、C#スレあたり荒らしたら板終わるんじゃね

273 名前:デフォルトの名無しさん mailto:sage [2012/09/25(火) 05:44:16.46 ]
>>272
Schme/LISP/関数型言語のtwitterでの書き込みは一日平均500を超えるようだけれど、
2chではほとんど0に近い。もうダメ的な状態ではないか。

274 名前:デフォルトの名無しさん mailto:sage [2012/09/25(火) 08:46:22.42 ]
しかもまともな人に限ってTwitterにさっさと行ってしまってるしねぇ。

275 名前:デフォルトの名無しさん mailto:sage [2012/09/25(火) 09:31:51.61 ]
(2chにまともな人材がいたとは)知らなかった

276 名前:デフォルトの名無しさん mailto:sage [2012/09/25(火) 09:45:30.85 ]
いるとか、考え方が気持ち悪い

277 名前:デフォルトの名無しさん mailto:sage [2012/09/25(火) 10:46:56.83 ]
>>273
おすすめのユーザー教えてくれ



278 名前:デフォルトの名無しさん mailto:sage [2012/09/25(火) 21:51:10.58 ]
めんどくさいでしょ

279 名前:デフォルトの名無しさん mailto:sage [2012/09/26(水) 15:41:28.14 ]
(Twitterに)まともな人材がいたとは知らなかった

280 名前:デフォルトの名無しさん mailto:sage [2012/09/26(水) 15:53:40.56 ]
>>279
大学院生、准教授クラスがごっそり。

281 名前:デフォルトの名無しさん mailto:sage [2012/09/26(水) 16:05:29.43 ]
>>279
関数型言語全体でいうと、大学生+院生+研究者だけで数千人いるのではないか。
一方、2chは珠に読む人を加えても100人にも満たない。


282 名前:デフォルトの名無しさん mailto:sage [2012/09/26(水) 16:13:05.03 ]
昨年一年間に、関数型言語ではないが、プログラミングの話題として日本語でPrologとツイートした
人だけで延べでなく2400人いた。関数型言語全体だと多分その10倍以上。

283 名前:デフォルトの名無しさん mailto:sage [2012/09/26(水) 21:17:21.52 ]
Prologダメだなとつぶやいたヒトがそんなに。

284 名前:デフォルトの名無しさん mailto:sage [2012/09/26(水) 21:57:03.68 ]
>>283
よくご存知だね。Prologワカンネの方が多い。

285 名前:デフォルトの名無しさん mailto:sage [2012/09/26(水) 22:14:14.09 ]
授業中にツイートするやつが多い


286 名前:デフォルトの名無しさん mailto:sage [2012/09/27(木) 06:57:40.26 ]
>>282
Prologのプログラマ人口から考えると脅威のツイッター組織率だ


287 名前:デフォルトの名無しさん mailto:sage [2012/09/27(木) 07:01:05.56 ]
>>286
驚異ではなくw



288 名前:デフォルトの名無しさん mailto:sage [2012/09/27(木) 12:02:56.50 ]
スレ違いな話題が多すぎるんで、正規表現の話にせめて絡めたいんだけど、
正規表現で2chやtwitterとかを検索できるサイトとかアプリってないのかな?

まあそれ以前にGoogleやらBingやらYahooやらの検索サイトに正規表現検索機能が欲しいんだが、
一般ユーザーが必要としないマニアックな検索方法を提供する気はないんだろうな

289 名前:デフォルトの名無しさん mailto:sage [2012/09/27(木) 20:55:45.67 ]
>>288
いちいち全文検索してるわけじゃなく、インデックスから引いているだけだからあまり意味ないんじゃないか。もしできても、利用者どれくらいだよ。否定やorも使われてないだろう。

290 名前:デフォルトの名無しさん mailto:sage [2012/09/28(金) 00:13:11.17 ]
or はたしかに使わないけど、否定は使うだろ。

291 名前:デフォルトの名無しさん mailto:sage [2012/09/28(金) 00:34:45.14 ]
コマンドオプションをそのまま貼って否定になってたりな。-help

292 名前:デフォルトの名無しさん mailto:sage [2012/09/28(金) 03:51:56.34 ]
>>290
以前は、たとえば「インタフェース OR インターフェース」みたいな、
表記の揺れを吸収するためにときどき使ってたんだが、
いまのGoogleじゃ全部向こうで勝手に吸収してくれるからな。
「interface」すら検索してくれる。

293 名前:デフォルトの名無しさん mailto:sage [2012/09/28(金) 08:55:24.32 ]
いんたーふぇすでも通る

294 名前:デフォルトの名無しさん mailto:sage [2012/09/28(金) 10:33:09.84 ]
もしかして 朝鮮人

295 名前:デフォルトの名無しさん mailto:sage [2012/09/30(日) 21:25:19.20 ]
ν速に帰れば?

296 名前:デフォルトの名無しさん mailto:sage [2012/10/01(月) 15:52:01.10 ]
●正規表現の使用環境
C#

●検索か置換か?
検索

●説明
タグの外にある文字列を順に取り出したい

●対象データ
<hoge><hoge></hoge>あああ<hoge><hoge></hoge>いいい<hoge></hoge>ううう<hoge><hoge>・・・

●希望する結果
while (m.Success)
の繰り返しの中であああ、いいい、ううう・・・と順に取り出していきたい

よろしくお願いします。

297 名前:デフォルトの名無しさん mailto:sage [2012/10/01(月) 15:59:13.26 ]
どれもタグの中にあるように見えます。 タグ以外ということでしょうか?



298 名前:デフォルトの名無しさん mailto:sage [2012/10/01(月) 16:04:40.91 ]
タグ以外ということでOKです。あと改行が含まれているのでその辺はどうなるでしょうか?

299 名前:デフォルトの名無しさん mailto:sage [2012/10/01(月) 16:27:06.78 ]
対象データがダメダメじゃん。

300 名前:デフォルトの名無しさん mailto:sage [2012/10/01(月) 16:55:21.70 ]
まあ、タグの定義を細かくやると書ききれない話になるので、
var list = from x in System.Text.RegularExpressions.Regex.Split( text,"<.*?>", System.Text.RegularExpressions.RegexOptions.Singleline) where x!="" select x ;
程度でいいのならこれで。


301 名前:デフォルトの名無しさん mailto:sage [2012/10/02(火) 09:54:42.29 ]
よろしくお願いします。

●正規表現の使用環境
サクラエディタ bregonig.dll Ver.3.02

●検索か置換か?
検索

●説明
"START"から"END"に囲まれた"HOGE"を最短一致(というのか?)で含まれる行を検索したい

●対象データ
1.xxxxxxxSTARTyyyyyyyyHOGEzzzzzzzzzzzENDaaaaaaa
2.xxxxxxxSTARTyyyyyyyyENDbbbbbbbHOGEzzzzzzzzzzzENDaaaaaaa

●希望する結果
1.だけマッチ
2.は"END"が"HOGE"の前に入ってるのでマッチ対象外

302 名前:デフォルトの名無しさん mailto:sage [2012/10/02(火) 10:40:02.40 ]
1の小文字部分にENDがないものと解釈した場合
^((?!END).)*?START((?!END).)*?HOGE((?!END).)*?END((?!END).)*?$

303 名前:301 mailto:sage [2012/10/02(火) 12:16:03.97 ]
>>302
ありがとうございます。
なるほど、((?!END).)*?の部分がポイントですね。

えと、すみません説明が不十分でした。
・1.の"yyyyyyyy"部分以外の小文字部分いずれかに"END"があってもマッチ
・1.の"zzzzzzzzzzz"部分に"END"があればそこまで(最短で)マッチ
・1.の小文字部分いずれかに"START"があっても"START〜HOGE〜END”の最短パターンでマッチ
・1.と2.の複合(1.の後ろに2.のパターンとかその逆とか)の場合でもマッチ
(条件がまだ足りてなかったり、冗長だったりするかもしれませんが)の場合は、レスの答えを参考に

START((?!END).)*?HOGE.*?END

として試してるところですが、これで良いのかな?

304 名前:デフォルトの名無しさん mailto:sage [2012/10/02(火) 12:48:40.42 ]
>>303
条件を満たす行だったので 

START((?!END).)*?HOGE.*?END
は STARTとHOGEの間にENDがなくHOGEの後ろにENDが少なくともひとつある
つまり、このマッチする部分の前か後ろ、HOGEとENDの間に
*STARTとHOGEの間にENDがある部分* があっても良ければそれで

305 名前:301 mailto:sage [2012/10/02(火) 14:59:07.75 ]
>>304
> 行だったので 
あぁー!自分で「行を検索」と書いてました。すみません。正確には「部分を検索」です。

> このマッチする部分の前か後ろ、HOGEとENDの間に
> *STARTとHOGEの間にENDがある部分* があっても良ければそれで

えと、波下線(~~~)をマッチ対象部分とすると、
a. このマッチする部分の前か後ろに *STARTとHOGEの間にENDがある部分*がある
 a-1:STARTaaaaaENDbbbbbHOGEcccccSTARTdddddHOGEeeeeeEND (前にある場合)
                         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 a-2:STARTaaaaaHOGEbbbbbENDcccccSTARTdddddENDeeeeeHOGE (後ろにある場合)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
b. HOGEとENDの間に *STARTとHOGEの間にENDがある部分* がある
 b-1:STARTaaaaaHOGEbbbbbSTARTcccccENDdddddHOGEeeeeeEND
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
a,bいずかでも良ければ、と解釈しました。
a,bとも下線のように、期待通りにマッチしていますが、
誤解とか頓珍漢な事を言ってるようなら、何なりと指摘してください。
国語が苦手なうえに回転が悪くてスミマセン(´・ω・`)

306 名前:デフォルトの名無しさん mailto:sage [2012/10/02(火) 15:13:22.64 ]
STARTaaaaaHOGEbbbbbENDcccENDで最短にならないぐらいかな

307 名前:301 mailto:sage [2012/10/02(火) 15:18:10.19 ]
連投スミマセン。

START((?!END).)*?HOGE.*?END
を使っていろいろやってみてる最中ですが、(波下線部分がマッチ対象部分)

xxxxxxxSTARTyyyyyyyyHOGEzzzzzzzzzzzSTARTaaaaaaHOGEbbbbbbbENDcccccccc
    a~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                         b~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
上のケースでは、aの部分がマッチしてしまうようです。
bの部分をマッチさせたかったのですが…

START((?!END).)*?HOGE((?!START).)*?END
"HOGE"と"END"の間に"START"は無しを条件にすればと
解らないなりに、こうか?wとやってみたのですが、結果は変わりませんでした_ノ乙(、ン、)_



308 名前:デフォルトの名無しさん mailto:sage [2012/10/02(火) 15:21:24.72 ]
その場合は、 ((?!END).)*?  が  yyyyyyyyHOGEzzzzzzzzzzzSTARTaaaaaa にマッチするので

309 名前:デフォルトの名無しさん mailto:sage [2012/10/02(火) 15:31:58.02 ]
START HOGE ENDの間に許容される条件が分からないので・・・

START((?!START|HOGE|END).)*?HOGE((?!START|HOGE|END).)*?END だと?


310 名前:301,303,305,307 mailto:sage [2012/10/02(火) 17:21:33.52 ]
レスありがとうございます。
相変わらずの長文でゴメンナサイ

>>306
えと、こちらの環境だと
STARTaaaaaHOGEbbbbbENDcccEND と最短でマッチしています…
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>308
> ((?!END).)*?  が  yyyyyyyyHOGEzzzzzzzzzzzSTARTaaaaaa にマッチするので
HOGE.*?ENDの部分で短めにマッチするからということですかねムツカチ━━━(;´д`)━━━イィィ

>>309
ぉおおっ!
> START((?!START|HOGE|END).)*?HOGE((?!START|HOGE|END).)*?END だと?
を見てなんとなくわかったような気がしてるような気がします。

> 許容される条件が分からないので・・・
ずびばぜん。゚(。ノωヽ。)゚。まとめます。>>303みたいに書かずに

*マッチ対象部分では*
1)"START"と"END"の間は、"START"と"END"は出現しない
2)"HOGE"は一つ以上出現しても良い

でよいのかな?やっぱりなんか混乱してるかも…σ(・´ω・`;)アハアハアハ ということで、
START((?!START|END).)*?HOGE((?!START|END).)*?END
こうですかね?これで様子を見ます。本当にありがとうございました。

311 名前:sage [2012/10/08(月) 18:38:19.35 ]
●正規表現の使用環境
練馬、nemery等のリネームソフト
可能なソフトに乗り換えようと思ってます

●検索か置換か?
置換

●説明
1.ファイル名末尾の数字が1桁の場合、0をつける。2桁の場合はそのまま
 ファイル名途中の数字はスルーさせたい
2.特定の文字(例では#)から特定の文字(例では-)の前までを削除したい

●対象データ
キリン#◯☓動物園-10月1
しろくま#△☓◯動物園-5月12
猫(2匹目)#我が家-11月5

●希望する結果
キリン-10月01
しろくま-5月12
猫(2匹目)-11月05

よろしくお願いします

312 名前:デフォルトの名無しさん mailto:sage [2012/10/08(月) 19:12:51.17 ]
練馬 SJIS版

s/(?<![0-9])([0-9]{1})$/0\1/k


s/#.*-/-/k

313 名前:デフォルトの名無しさん mailto:sage [2012/10/08(月) 20:02:16.41 ]
>>312
ありがとうございます
練馬で頑張ってみますね

314 名前:デフォルトの名無しさん [2012/10/11(木) 18:53:52.96 ]
tで始まる文字列を文頭のthe[スペース]を無視して検索する場合
^t[^h]|^th[^e]|^the tが思いついたけど、もっといい正規表現ありますか?

環境はActive Perl5で否定演算子!は使えません

315 名前:デフォルトの名無しさん mailto:sage [2012/10/11(木) 18:59:56.47 ]
>>314の訂正
×^t[^h]|^th[^e]|^the t
○^t[^h]|^th[^e]|^the[^ ]|^the t

×の正規表現だと"there"とかがヒットしなくなってしまう。失礼しました

よろしくお願いします

316 名前:デフォルトの名無しさん mailto:sage [2012/10/11(木) 20:17:23.53 ]
lookbehindが使えないって意味じゃないよな?

(?<!^the )t

317 名前:デフォルトの名無しさん [2012/10/11(木) 21:09:22.06 ]
>>316
レスありがとうございます
(?<!^the )tを使ってみましたがうまくいきませんでした

lookbehindは知りませんでした、勉強していろいろ試してみようと思います



318 名前:デフォルトの名無しさん mailto:sage [2012/10/11(木) 21:35:20.97 ]
(?!^the\b)\bt\w+

こう?

319 名前:デフォルトの名無しさん mailto:sage [2012/10/11(木) 21:51:37.73 ]
/(?!the )t\w+/
これだと末尾のtheという単語拾うけど

320 名前:デフォルトの名無しさん [2012/10/11(木) 21:55:51.23 ]
>>318
たびたびすいません

それもうまくいきませんでした。文字列の途中の"t"もヒットしているようです
"abc this def"とかもヒットして"t"で始まる文字列のみのヒットにはなってないです

321 名前:デフォルトの名無しさん mailto:sage [2012/10/11(木) 22:18:05.08 ]
>>320
文頭のtheを除くtで始まる語全てを拾うようにした(=そうなるようにした)んだけど
ものすごく要件読み違えてたのか

322 名前:デフォルトの名無しさん [2012/10/11(木) 22:31:43.65 ]
>>321
"文頭のtheを除くtで始まる語全てを拾う"でいいんですけど
僕の環境だと(?!^the\b)\bt\w+でもうまくいかないんです
やりたいことは"the abc"とかは排除して"the tuv"や"there"や"tabc"とかはヒットさせたいということです

配列の各文字列を検索してるんですが、配列には"abc this def"や"abc the def"
とかも入ってます

323 名前:デフォルトの名無しさん mailto:sage [2012/10/11(木) 22:38:34.31 ]
^(?!the\b)t\w+
こうなのか?

324 名前:デフォルトの名無しさん [2012/10/11(木) 22:47:53.42 ]
>>323
それでほぼヒットしたんですが、"the t"で始まる("the "の後に"t"で始まる)
文字列だけがヒットしてないです

たびたびすいません

325 名前:デフォルトの名無しさん mailto:sage [2012/10/11(木) 22:49:02.16 ]
>>322
うーん自分は"文頭のtheを除くtで始まる語全てを拾う"だと思ったから

> "abc this def"や"abc the def"

このthisやtheにもマッチさせてたんだよ

"the tuv" は tuv でマッチすべきだけど
"abc tuv def" なら tuv にはマッチしちゃいけないのか

326 名前:デフォルトの名無しさん mailto:sage [2012/10/11(木) 22:53:18.24 ]
^(?:(?!the\b)t\w+|the t\w+)

>>323-324を見たらこうなったけど要件はわかってない

327 名前:デフォルトの名無しさん [2012/10/11(木) 23:01:51.10 ]
>>325
わかりにくくてすいません
配列内の文字列全体で"文頭のtheを除くtで始まる語全てを拾う"であって
ワード単位で"文頭のtheを除くtで始まる語全てを拾う"ではありませんでした

"abc tuv def"はマッチさせません。あくまで配列内の文字列全体で"t"で始まるです
配列内の文字列の最初が"t"で、最初の"the "は無視するということです



328 名前:デフォルトの名無しさん [2012/10/11(木) 23:08:33.82 ]
>>324訂正
"the t"で始まる("the "の後に"t"で始まる)文字列だけでなく
"t'abc"や"t.a.b.c"などがヒットしてなかったです

>>326
レスありがとうございます
"the t"で始まる文字列もヒットしましたが、"t'abc"や"t.a.b.c"などがヒットしていないです

329 名前:デフォルトの名無しさん mailto:sage [2012/10/11(木) 23:12:26.40 ]
\w はおせっかいだったのか

^(?:(?!the\b)t|the t)

330 名前:デフォルトの名無しさん mailto:sage [2012/10/11(木) 23:17:51.66 ]
"the the"の場合は?

331 名前:デフォルトの名無しさん [2012/10/11(木) 23:21:45.68 ]
>>329
ありがとうございます。すべてヒットしました

正規表現は初心者で"|"を多数使って力技でヒットさせてました
もっと正規表現の勉強が必要だと痛感しました

>>330
それは想定していませんでしたw
最初の"the "だけを無視ということで・・・

332 名前:デフォルトの名無しさん mailto:sage [2012/10/11(木) 23:33:28.55 ]
t.A.T.u.
最初からテンプレに沿って例題集を提示して欲しかったな。>>311みたいに。
今度からはそうして。

…thereだけでなくthe:4にもヒットしてくれとか、もう言わないよね?

333 名前:デフォルトの名無しさん mailto:sage [2012/10/11(木) 23:39:21.03 ]
ちょw
>>331
否定演算子!を使えなかった理由は?

334 名前:デフォルトの名無しさん [2012/10/11(木) 23:40:21.32 ]
>>332
拙速な質問ですいませんでした。以後気をつけます

the:4はヒットしなくていいです
どうもありがとうございました

335 名前:デフォルトの名無しさん [2012/10/11(木) 23:45:15.76 ]
>>333
理由はわかりません。僕の環境では/^t!h/で検索してみても"tuv"や"true abc"
などがまったくヒットしないです

336 名前:デフォルトの名無しさん mailto:sage [2012/10/11(木) 23:51:00.06 ]
>>335
Perlの否定演算子って、 !~ とかを指してるんじゃなかったのかw
そりゃ無理っしょ

337 名前:デフォルトの名無しさん [2012/10/11(木) 23:55:30.32 ]
>>336
すいません、perlも最近使い始めたばかりであまりよくわかってないです
勉強してみます



338 名前:デフォルトの名無しさん mailto:sage [2012/10/12(金) 21:35:10.48 ]
/\*[^*]*\*+([^/*][^*]*\*+)*/

Cのコメントをとりのぞく
詳説 正規表現
p.192
p.326

339 名前:こんまけ mailto:sage [2012/10/13(土) 10:48:59.23 ]
\*+の後なら[^*]なので。
/\*[^*]*\*+([^/][^*]*\*+)*/
じゃダメな理由とか例は出せられます?

340 名前:デフォルトの名無しさん mailto:sage [2012/10/13(土) 12:06:56.17 ]

339のだと/****/*/みたいのにもマッチできるので良くない。
単独でマッチさせるだけだと普通の正規表現エンジンなら
/****/の部分まででマッチしちゃってそっから先には行かない
けど、他の正規表現を前後につけると違いが出てくると思う。

例えば全体を^と$で挟むとか。

341 名前:デフォルトの名無しさん mailto:sage [2012/10/13(土) 13:25:10.54 ]
コンパイラの構文解析機を使うのが確実。自分のコーディングルールだけで使うなら、自分のツールボックスにしまっておけばいい。

342 名前:339 mailto:sage [2012/10/13(土) 15:38:32.78 ]
れすさんくす、
338 も 339 もベストじゃなくて、339 が 338 よりベターなんですね。
例えば、コメントの後ろにAという文字がある場合を検索したいとか…

343 名前:デフォルトの名無しさん mailto:sage [2012/10/13(土) 20:26:20.34 ]
AAA : BBBB CCCC DDD1[0] DDD2[1] DDD3[2] DDD4[3]
がある場合にDDD1[0] DDD2[1] DDD3[2] DDD4[3]のみ取得したい。
もしくはAAA : BBBB CCCC を削除したいです。
よろしくお願いします。

344 名前:デフォルトの名無しさん mailto:sage [2012/10/13(土) 20:54:07.95 ]
>>343
DDD\d\[\d\]

345 名前:デフォルトの名無しさん mailto:sage [2012/10/13(土) 21:38:35.67 ]
環境書かない方も悪いけど、互換性低い\dで回答するのはどうなんだろう

346 名前:デフォルトの名無しさん mailto:sage [2012/10/13(土) 21:47:54.77 ]
正規表現における
#
ってどんな意味を持つのですか?

347 名前:デフォルトの名無しさん mailto:sage [2012/10/13(土) 21:50:54.31 ]
>>346
#



348 名前:デフォルトの名無しさん mailto:sage [2012/10/13(土) 21:59:51.01 ]
>>345
ごめん。 \d=[0-9]

質問から察するに、数字部分は可変だろうね。

349 名前:デフォルトの名無しさん mailto:sage [2012/10/13(土) 22:00:36.84 ]
>>346
特に意味なし。単なる「#」という文字。

350 名前:デフォルトの名無しさん mailto:sage [2012/10/13(土) 22:05:33.99 ]
>>347
>>349
ありがとうございます

351 名前:デフォルトの名無しさん mailto:sage [2012/10/13(土) 22:07:23.75 ]
>>345
\dが[0-9]でないのって、どんなのがあるの?

352 名前:デフォルトの名無しさん mailto:sage [2012/10/13(土) 22:22:42.43 ]
>>351
秀丸はバージョン7あたりまで\dとか\sあたりが使えなかった

grepとかsedコマンドとかviエディタ内の正規表現とか
まあこの辺になってくると()や|の前にバックスラッシュつけないと
正規表現として機能しないという点でも非互換だけどもw

353 名前:デフォルトの名無しさん mailto:sage [2012/10/13(土) 22:37:04.96 ]
>>351
鬼車や鬼雲の\dは[0-90-9]と等価
Ruby 1.9系の正規表現エンジンは鬼車だけどカスタマイズされたフォーク版なので、\dを [0-9]と等価になるように修正してある

354 名前:デフォルトの名無しさん mailto:sage [2012/10/13(土) 23:25:52.84 ]
>>352 なるほど。
古めのエンジン、正規表現の源流に近いあたりでは\dは無いのね。
しかし秀丸バージョン7って、かなり最近じゃ。ちょっとひどいな。

>>353 そうなのかー。
先進的すぎても主流との互換性の点で問題あるよね。

355 名前:デフォルトの名無しさん mailto:sage [2012/10/13(土) 23:41:43.03 ]
>>353
>鬼車や鬼雲の\dは[0-90-9]と等価
うお、なんかイメージよりも範囲広すぎ。
敢えて[0-9]って書いといた方が無難なのね。

356 名前:デフォルトの名無しさん mailto:sage [2012/10/13(土) 23:51:08.46 ]
>>353
鬼雲は(?u),(?a)でUnicodeの範囲かASCIIの範囲かを制御できる。
\d,\s,\wがUnicodeの範囲でマッチするのはPerlに合わせた仕様。

357 名前:デフォルトの名無しさん mailto:sage [2012/10/24(水) 21:11:42.58 ]
●正規表現の使用環境
MSVC2012 / .NET Framework 4.5

●検索か置換か?
検索

●説明
「|」「(」「)」が文字として入っているデータから、特定の文字列を抜き出したい。

●対象データ
area|name (value)

tokyo|yamada benzo (123)
kyoto|namae tarou (21)
saga|shitemo mitukaranai you (7)

●希望する結果
area, name, value

"tokyo", "yamada benzo", "123"
"kyoto", "namae tarou", "21"
"saga", "shitemo mitukaranai you", "7"

このように取り出したいのですが、どのように書くとよいでしょうか



358 名前:デフォルトの名無しさん mailto:sage [2012/10/24(水) 21:20:10.28 ]
カッコの整合を取りたいのでなければ
"tokyo|yamada benzo (123)".Split(new char[] { '|', '(', ')' },StringSplitOptions.RemoveEmptyEntries)
でよかったりしない?

359 名前:デフォルトの名無しさん mailto:sage [2012/10/24(水) 22:06:41.28 ]
>>358
あ、本当ですね…。
このやり方のほうがさっぱりしてていいですね。
こちらでやらせてもらいます。
解決できちゃいました。
どうもありがとうございました。

360 名前:デフォルトの名無しさん mailto:sage [2012/11/01(木) 12:21:53.25 ]
あー!
正規表現で空白を縮めればいいのか

361 名前:360 mailto:sage [2012/11/01(木) 12:23:30.20 ]
すみません自己解決しました

362 名前:デフォルトの名無しさん mailto:sage [2012/11/06(火) 14:38:40.09 ]
「CDATA」を含まない行を検索したいのですが、先読み否定を使用しましたがうまく検索できませんでした。
 ^(?!.*?CDATA)

指定文字列を含まない行をどのような指定で検索できるでしょうか?

363 名前:デフォルトの名無しさん mailto:sage [2012/11/06(火) 14:42:14.02 ]
つ[grep -v]

364 名前:デフォルトの名無しさん mailto:sage [2012/11/06(火) 14:48:45.45 ]
>>362
自己レス

Java → ×
サクラエディタ → ○

Javaの問題?

365 名前:デフォルトの名無しさん mailto:sage [2012/11/06(火) 15:13:49.63 ]
^((?!CDATA).)*$

366 名前:デフォルトの名無しさん mailto:sage [2012/11/09(金) 22:58:08.67 ]
●正規表現の使用環境
perl5
●検索か置換か?
置換
●説明
keyとvalueの間はコロン区切り、keyとvalueのペアの間はカンマ区切りになっている
key1:value1,key2:value2,key3:value3 という形式で書かれている文字列で、
指定したkeyに対応するvalueの値を取得したい。
 ・valueの文字列にはコロンやカンマが入っている可能性があるので、それを区切り文字にはできません。
 ・valueの文字列は、:value:や,value,のように、先頭や末尾がコロンやカンマの可能性があります。
 ・key3:value3,key2:value2,key1:value1 のように順番は変わる可能性があります。
 ・keyとvalueのペアは、何個あるかはわかりません。0個の場合もあり。
 ・指定するkey以外のkeyについても、何があるかはわかりません。
 ・keyもvalueも可変長で、valueが空という場合もあります。
●対象データ
AAA:V,:1,BBB:V,,::2,CCC:V,,,:::3,DDD:,V4:,EEE:
●希望する結果
AAAをkeyとすると、V,:1
BBBをkeyとすると、V,,::2
CCCをkeyとすると、V,,,:::3
DDDをkeyとすると、,V4:
EEEをkeyとすると、空
FFFをkeyとすると、空

3日くらい試行錯誤してますが、全然解決できず気が狂いそうです・・・
完全に、論理的に無理ゲーでしょうか?

367 名前:デフォルトの名無しさん mailto:sage [2012/11/09(金) 23:36:12.98 ]
値(orKey)にデリミタがエスケープ無しで出るなら区別できないんじゃね?
例に挙げているのでも
 DDD=空
 V4=空
 EEE=空
と言う解釈も出来る(FFFは存在しないKey)



368 名前:デフォルトの名無しさん mailto:sage [2012/11/09(金) 23:40:02.61 ]
>>366
素直にsplitしたら負け?

369 名前:デフォルトの名無しさん [2012/11/10(土) 00:32:09.53 ]
デリミタ制限してないなら無理ゲーだろ
V,:1,BBB:V,,::2,CCC:V,,,:::3,DDD:,V4:,EEE:
たとえば↑これ全体がAAAのvalueならどこで切れるんだよ

370 名前:デフォルトの名無しさん mailto:sage [2012/11/10(土) 02:57:15.54 ]
> DDDをkeyとすると、,V4:

これは何故なんだ?書かれてる条件だけ見ると
>>367が書いてる通り DDD=空 になるように思える
そこが明確にならなければ正規表現使うどころか
実直に一文字ずつパースしても無理に思える

371 名前:デフォルトの名無しさん mailto:sage [2012/11/10(土) 03:57:23.97 ]
手作業でやっても一意に決まらないようなのはどうしようも無いぞ

372 名前:デフォルトの名無しさん mailto:sage [2012/11/10(土) 12:21:33.25 ]
正規表現がどうのより、データの出力形式を見直したほうがいいな。
表計算ソフトのCSVの出力形式とか参考にしてさ。

正直、正規表現の出番以前の問題だよ。まずは論理的で明確なデータを用意するべき。

373 名前:366 mailto:sage [2012/11/10(土) 21:43:20.41 ]
>>367, 368, 369, 370, 371, 372
たくさんのレス、アドバイスありがとうございます。お礼が遅くなりすみません

>>367, 369
やはり、デリミタが値の中に出てくる時点で、無理なデータぽいですよね。
>>368
splitするにも、カンマがデータ中に出てきたりするもので・・・
>>370
「,V4:」という部分が、データなのです。この場合のカンマは、デリミタではなく値でして・・・
>>371, 372
やはり、論理的に矛盾したフォーマットですよね・・・

結論として、とりあえずsplitでパースしたものがだいたい正常になるので、後は目視・手作業でやることにしました。
無茶苦茶なフォーマットのデータを置いて行った前任者を恨みます・・・

374 名前:デフォルトの名無しさん mailto:sage [2012/11/10(土) 21:51:25.57 ]
, と : がデータの一部として使われるときにある程度の規則性があるならそれを利用して判別
するといいかもね。まぁこれにも限界があるし誤爆の可能性もあるから目視は必須だけどね。

375 名前:デフォルトの名無しさん mailto:sage [2012/11/10(土) 22:08:21.52 ]
前任者がキ印とかカワイソス

376 名前:デフォルトの名無しさん mailto:sage [2012/11/11(日) 01:40:44.89 ]
目視で決められるのなら何か規則性があるんじゃないの?
キー名だと分かる何かが?

377 名前:デフォルトの名無しさん mailto:sage [2012/11/11(日) 01:44:41.01 ]
値に隠された制約があるはず。 でなければ目視で出来ない。



378 名前:デフォルトの名無しさん mailto:sage [2012/11/11(日) 18:42:00.12 ]
わからない時は古くからいる人に聞く、
これも「目視」のうちに入るのかもしれんしな。

379 名前:デフォルトの名無しさん mailto:sage [2012/11/11(日) 20:50:46.82 ]
>>376
文脈で判断だと、規則が膨大になりすぎるんじゃない。

380 名前:デフォルトの名無しさん mailto:sage [2012/11/11(日) 22:40:27.53 ]
●正規表現の使用環境
perl

●検索か置換か?
置換

●説明
1文字だけのAを空白に置換(または削除)したい

●対象データ
appleAisAdeliciousAAA

●希望する結果
apple is deliciousAAA

前後に同じ文字が連続していない場合、その文字だけを消したいです。

381 名前:デフォルトの名無しさん mailto:sage [2012/11/11(日) 22:53:00.61 ]
先頭のaも消してよければコレ
(?<!a)a(?!a)

382 名前:デフォルトの名無しさん mailto:sage [2012/11/11(日) 22:54:55.34 ]
あ、大文字だけか。
perlはよくわからんけどオプションかなんか指定して
aをAにすりゃたぶん大丈夫

383 名前:380 [2012/11/11(日) 23:15:05.09 ]
>>382
ありがとうございます。
先頭にAがあると消えてしまいますが、教えて頂いた方法でできました。
$string =~ s/(?<!A)A(?!A)//g; という文です。

できれば、先頭のAが消えないパターンが理想なので、
引き続きアドバイスを募集させてください。

384 名前:デフォルトの名無しさん mailto:sage [2012/11/11(日) 23:27:49.74 ]
んじゃ、これでは?
(?<!^|A)A(?!A)

385 名前:デフォルトの名無しさん mailto:sage [2012/11/12(月) 00:15:19.92 ]
>>384
ありがとうございます。
ただ、こちらの表現は「Variable length lookbehind not implemented in regex」
というエラーになって実行できませんでした。

どうやら、戻り読み?というものに対応できていないようです。
環境を書き忘れましたが、xammpを入れてperl 5.16.1で実験してます。

386 名前:デフォルトの名無しさん mailto:sage [2012/11/12(月) 03:15:42.78 ]
もっと原始的に、これはどうか。
(^|[^A])A([^A]|$)
\1 \2
\1\2

ただ、よく分からないのは
>前後に同じ文字が連続していない場合、その文字だけを消したいです。
文字? 置換対象はAだけだよね?

387 名前:デフォルトの名無しさん mailto:sage [2012/11/12(月) 03:20:51.76 ]
あれ、>>383をよく読んでなかった。

>先頭のAが消えないパターンが理想
条件追加/変更なら改めて例示をやり直してくれるとありがたいんだけど。

これならいいかな?
([^A])A([^A]|$)



388 名前:デフォルトの名無しさん mailto:sage [2012/11/12(月) 07:19:30.62 ]
(?<!^)(?<A)A(?!A)

389 名前:デフォルトの名無しさん mailto:sage [2012/11/12(月) 10:32:08.35 ]
( ´д)ヒソ(´д`)ヒソ(д` )

390 名前:388 mailto:sage [2012/11/12(月) 11:02:29.20 ]
すまん。!が抜けてた。(?<!A)

391 名前:デフォルトの名無しさん mailto:sage [2012/11/12(月) 16:00:51.00 ]
テストしてから書き込んでないってのがよく分かるな。せめて動作確認してから貼れよ。

392 名前:デフォルトの名無しさん mailto:sage [2012/11/12(月) 18:33:07.61 ]
ちょっとかっこ悪い

(?<=.)(?<!A)A(?!A)

393 名前:デフォルトの名無しさん mailto:sage [2012/11/12(月) 18:52:46.82 ]
戻り読みより\K使えよ
固定長の必要なくなるぞ

394 名前:デフォルトの名無しさん mailto:sage [2012/11/12(月) 20:55:01.12 ]
perlなら文字列操作関数で頑張ればいいのに。人に聞けばいいや、はイカン。

395 名前:デフォルトの名無しさん mailto:sage [2012/11/15(木) 14:27:21.57 ]
同じ英数字が4文字以上、の正規表現は(a{4,}|b{4,})…と地道に指定しないとダメでしょうか?

396 名前:デフォルトの名無しさん mailto:sage [2012/11/15(木) 15:29:29.79 ]
●正規表現の使用環境
php

●検索か置換か?
置換

●説明
2文字目以降の「.」以外の数字を「*」に置換したい。

●対象データ
12.34

●希望する結果
1*.**

397 名前:デフォルトの名無しさん mailto:sage [2012/11/15(木) 19:52:54.79 ]
>>395
([a-zA-Z0-9])\1{3,}



398 名前:デフォルトの名無しさん mailto:sage [2012/11/15(木) 21:00:56.65 ]
>>396
\G使え。

399 名前:デフォルトの名無しさん mailto:sage [2012/11/18(日) 11:15:26.52 ]
●正規表現の使用環境
jruby1.7.0

●検索か置換か?
検索

●説明
<abc def/>とあるようなタグを検索したい

●対象データ
<bbb><aaa><abc/></aaa></bbb>

●希望する結果
<abc/>

タグ内の文字列は記号を含んだ任意の文字列です
<.*?\/> とすると
<bbb><aaa><abc/> とか
<aaa><abc/> とかでヒットするのでどうにか
<abc/> だけでヒットさせることができないものでしょうか?

400 名前:デフォルトの名無しさん mailto:sage [2012/11/18(日) 11:21:39.09 ]
その説明だと

/<abc&yen;/>/

でいいんじゃねーのとしか読めないなw

401 名前:デフォルトの名無しさん mailto:sage [2012/11/18(日) 11:41:03.34 ]
ほれ

<[^<]*\/>

例であげてた<.*?\/>の?はなんか意味あるの?

402 名前:デフォルトの名無しさん [2012/11/18(日) 11:44:52.55 ]
質問者の環境で使えるかどうかは知らんが最小マッチな

403 名前:デフォルトの名無しさん mailto:sage [2012/11/18(日) 12:03:56.89 ]
>>401
できましたありがとうございます!
^は行頭の意味で覚えていたので思いつきませんでした…
?は一応、後ろの方に対して最小一致のつもりでした

404 名前:デフォルトの名無しさん mailto:sage [2012/11/18(日) 12:37:00.59 ]
量指定子のオプション ? が「ものぐさマッチ」である好例だね。
最小/最短という言葉だと、一番短くなる箇所でマッチするのかと誤解して覚えてしまう。

本当の最短マッチを探索する環境もあったような?

405 名前:デフォルトの名無しさん mailto:sage [2012/11/18(日) 13:32:55.34 ]
あー最小一致か。あったね、そういえば。
(個人的には)あんまり使わないからすっかり忘れてた

406 名前:デフォルトの名無しさん mailto:sage [2012/11/18(日) 14:56:08.36 ]
xxxは長さも値もランダムな文字列で

hoge+xxx/fuge+xxx/test+xxx

hoge+xxx/fuge+xxx や hoge+xxx/test+xxx や fuge+xxx/test+xxx
としたいのですが、例えばfuge+xxx/test+xxxとしたいとき
hoge.+(/)?とやるとfugeもtestも削除されてしまうんですがどうすればいいのでしょうか?
.に/も含まれてしまうのが問題だと思うのですが

407 名前:デフォルトの名無しさん [2012/11/18(日) 15:01:22.03 ]
>>406
環境書いて欲しいところだが「.+」の代わりに
[^/]+

[^\/]+
でどうよ?



408 名前:406 mailto:sage [2012/11/18(日) 15:13:14.89 ]
>>407
できました!ありがとうございます!
その考え方は無かったです

409 名前:407 mailto:sage [2012/11/18(日) 15:36:08.79 ]
>>408
どういたしまして
ところで>>399>>406は同一人物?

410 名前:406 mailto:sage [2012/11/18(日) 15:38:57.16 ]
自分はphpでしたが似てますね
もっとよーく見てから質問するべきでした

411 名前:407 mailto:sage [2012/11/18(日) 16:20:51.12 ]
>>410
同一人物でなかったのならお気になさらずに

さすがに同一人物だったら>>401の意味を自分で理解しようよって感じでしたが

412 名前:デフォルトの名無しさん mailto:sage [2012/11/19(月) 12:25:00.01 ]
Windows用で正規表現に対応したファイル検索ソフトってありませんか?

413 名前:デフォルトの名無しさん mailto:sage [2012/11/19(月) 12:28:56.30 ]
たくさんあるよ。

414 名前:デフォルトの名無しさん mailto:sage [2012/11/19(月) 18:10:37.09 ]
コマンドプロンプトからperlやphpでも行けそう。
フリーソフトなら腐るほどありそう。

415 名前:デフォルトの名無しさん mailto:sage [2012/11/19(月) 22:47:26.62 ]
>>396
対象データって小数点以下がある数字?
それともIPアドレスみたいに . が複数存在する場合もある?

00.1 ←数字ではあり得ない並び
1.2.3 ←ピリオドが2つ以上あるデータ
1.2. ←ピリオドで終わるデータ

こういうデータは置換対象にする?しない?

416 名前:デフォルトの名無しさん mailto:sage [2012/11/20(火) 10:31:38.08 ]
↑今日中に応答がない場合はもうこのスレ開くことないと思うのでご了承ください。。

417 名前:デフォルトの名無しさん mailto:sage [2012/11/20(火) 16:30:04.26 ]
正規表現使うべき所じゃないよねぇ



418 名前:デフォルトの名無しさん mailto:sage [2012/11/20(火) 17:13:22.83 ]
s/(?!^)[^.]/#/g

419 名前:デフォルトの名無しさん mailto:sage [2012/11/20(火) 18:43:16.52 ]
>>417
いえ、普通に使えるケースです。

>>418
これだと数字とピリオド以外の文字がデータに存在した場合、意図しない動作になってしまいます。
(文頭に半角スペースが入った場合など)

420 名前:デフォルトの名無しさん mailto:sage [2012/11/20(火) 19:01:50.50 ]
小出しェ

421 名前:デフォルトの名無しさん mailto:sage [2012/11/20(火) 20:06:03.18 ]
シェルスクリプトスレより誘導されてきました

以下のような文章があったとします
〜aaa〜bbbaaa〜bbbaaa〜bbb〜
(〜は文字数の定まっていない文字列を表しています。)
ここから、それぞれ最初のaaa〜bbbだけを抽出、真ん中のaaa〜bbbだけを抽出、最後のaaa〜bbbだけをgrep -oなどで抽出したい時、どう正規表現で表せばよいのでしょうか?

422 名前:デフォルトの名無しさん mailto:sage [2012/11/20(火) 21:13:44.65 ]
>>421
言語は何?あと与えられたテキストがaaaa〜bbbbだったらどこでaaaとbbbを区切るの。

423 名前:デフォルトの名無しさん mailto:sage [2012/11/20(火) 21:41:53.58 ]
必ず3回aaa〜bbbが出てくるの?
もうチョイ詳しく書いてくれないとどうにも

どっちにしろ正規表現以外のサポートが受けれるなら
そっちと組み合わせたほうがはやいと思うよ

424 名前:デフォルトの名無しさん mailto:sage [2012/11/21(水) 00:57:30.56 ]
>>422
言語というかunixのシェルスクリプトです

与えられたテキストが、とはどういう事でしょうか?
〜以外の部分は上記の文で確定しています
aaa〜bbbaaa〜bbbaaa〜bbbは何回続くのかは確定していません

この文自体を正規表現で表すとこんな感じだと思います
.*(aaa.*bbb)+.*
この中からn番目のaaa.*bbbだけを抽出したいのですが無理でしょうか?(実際にはaaaとbbbの間の文字列を取得したいです)
説明が下手で申し訳ありません・・・

425 名前:デフォルトの名無しさん mailto:sage [2012/11/21(水) 01:20:15.05 ]
>>424
質問の意図は分かったけどシェルスクリプトで使える正規表現を知らないから
それを調べるのにちょっとかかりそう。それさえ分かれば簡単なんだけどねw

426 名前:デフォルトの名無しさん mailto:sage [2012/11/21(水) 02:17:30.96 ]
>>424
ある程度調べた。grep -P オプションが使えない環境では無理。
普通のgrepだと (aaa.*bbb)+ とかでおおざっぱに取り出すことしか出来ないね。

unixにperlインスコしてperlの正規表現で処理すれば簡単なんだけどな。

参考にしたサイト
linuxjm.sourceforge.jp/html/GNU_grep/man1/grep.1.html

427 名前:デフォルトの名無しさん mailto:sage [2012/11/21(水) 10:50:11.06 ]
aaa[^b]*bbb でぶった切って、煮るなり焼くなり。



428 名前:デフォルトの名無しさん mailto:sage [2012/11/21(水) 11:29:13.52 ]
最初のaaaより手前と最後のbbbより後をsedで切り落とせば、あとはawkで
bbbaaaを区切りに指定して$1でも$2でも好きなの取り出せるよ

sed 's/^&yen;([^a]&yen;|a[^a]&yen;|aa[^a]&yen;)*aaa//'|sed 's/bbb&yen;([^b]&yen;|b[^b]&yen;|bb[^b]&yen;)*$//' | awk -Fbbbaaa '{print $2}'

429 名前:デフォルトの名無しさん mailto:sage [2012/11/21(水) 12:16:09.86 ]
マルチ
toro.2ch.net/test/read.cgi/unix/1039165754/814

430 名前:デフォルトの名無しさん mailto:sage [2012/11/21(水) 13:33:13.02 ]
向こうに山崎渉がいたぞ。
もうすぐ10周年って、どんだけ長持ちなスレなんだよ。
toro.2ch.net/test/read.cgi/unix/1039165754/29

431 名前:デフォルトの名無しさん mailto:sage [2012/11/21(水) 17:11:37.20 ]
>>426
grep -Pは使える環境です!
>>427-428
ありがとうございます!参考にさせてもらいます>>429
それ僕じゃないです

432 名前:デフォルトの名無しさん mailto:sage [2012/11/21(水) 19:43:02.39 ]
>>431
perlそのままで書くと↓

((?!aaa).)*(aaa((?!bbb).)*bbb){1}aaa\K((?!bbb).)*(?=bbb)

ただしシェルスクリプトだと\Kが使えない可能性が高いな・・その場合は>>428さんので。

{1} の数字を変えると取り出したい組み合わせを何番目にするか調整出来る。
{ } の中には 「取り出したい何番目かの数字」 - 1 を入れる。1番目なら0、2番目なら1、3番目なら2・・・

433 名前:デフォルトの名無しさん mailto:sage [2012/11/21(水) 19:45:39.38 ]
基本正規表現で十分だろ
aaa[^b]*\(b\{1,2\}[^b]\+\)*b\{0,2\}bbb

434 名前:デフォルトの名無しさん mailto:sage [2012/11/21(水) 19:58:50.64 ]
>>432はgrep -oで取り出すのを前提にしてます。
$1や$2で取り出せるならもっとシンプルに書けるんですけどね・・

435 名前:デフォルトの名無しさん mailto:sage [2012/11/21(水) 21:34:51.99 ]
aaa123bbbbaaa456bbb

これから123bを正しく取り出すには..

436 名前:デフォルトの名無しさん mailto:sage [2012/11/21(水) 21:47:14.20 ]
echo 'aaa123bbbbaaa456bbb' | grep -o 'aaa[^b]*\(b\{1,2\}[^b]\+\)*b\{0,2\}bbb' | sed -e 's/^aaa//' -e 's/bbb$//'

437 名前:デフォルトの名無しさん mailto:sage [2012/11/21(水) 22:08:47.89 ]
>>398
これJavaの正規表現だとどうなりますか?



438 名前:デフォルトの名無しさん mailto:sage [2012/11/22(木) 00:30:07.28 ]
>>432
上手く動作しなかったので>>428さんのを使わせてもらいます!色々ありがとうございました

最後に、
〜aaa〜bbb〜aaa〜bbb〜aaa〜bbb〜
からn番目のaaa〜bbbを抽出する方法を教えてもらえるとありがたいです

439 名前:デフォルトの名無しさん mailto:sage [2012/11/22(木) 01:58:36.36 ]
>>437
phpと同じでおk。

440 名前:デフォルトの名無しさん mailto:sage [2012/11/22(木) 07:15:21.91 ]
>>438
スクリプトで式を生成する。

441 名前:デフォルトの名無しさん mailto:sage [2012/11/22(木) 21:25:36.85 ]
\Gの使い方は↓参照。

rs0032.zip【ノウハウ】まとめ (正規表現のメモ的なもの)
www42.tok2.com/home/proxo/rep/

↑は↓のツールで開くか、テキストエディタで開くと読める。
1st.geocities.jp/neeetest/jane.html

442 名前:デフォルトの名無しさん mailto:sage [2012/11/24(土) 04:35:57.17 ]
>>440
スクリプトで式を生成する、とはどういう事でしょうか?教えてもらえるとありがたいです

443 名前:デフォルトの名無しさん mailto:sage [2012/11/24(土) 08:49:57.78 ]
横だけど。

>>442
nが3のとき、4のとき、5のとき……って、必要なコマンドが全て違うわけだ。
でも、よ〜く見てみると完全に別のコマンドって訳じゃなくて、法則性があったりする。

だったらこの法則性を利用して、コマンドの文字列自体を出力するプログラムを書いてしまえということ。

444 名前:デフォルトの名無しさん mailto:sage [2012/11/24(土) 12:37:22.12 ]
自分で正規表現作れるようになろうっていう意思がまるっきり感じられないのがなぁ。
ただのクレクレには答える気ないというのが総意だろう。

445 名前:デフォルトの名無しさん mailto:sage [2012/12/06(木) 19:13:37.62 ]
ruby初心者です
テキスト中の指定した記号を削除したいのですが
text = 任意のテキストファイルにしておいて
text2 = "#{text}".gsub(/[\[\]\(\)\/"「」!@`~-.]/, "")
と書くと
invalid regular expression: /[\[\]\(\)\/"\242\243!@`~-.]/
となってしまいます
ついさきまでなんのエラーもなくできていたのですがどこがおかしいのでしょうか

446 名前:デフォルトの名無しさん mailto:sage [2012/12/06(木) 21:52:13.08 ]
マイナスでは。
"#{text}".gsub(/[\[\]\(\)\/"「」!@`~.-]/, "")
"#{text}".gsub(/[\[\]\(\)\/"「」!@`~\-.]/, "")

447 名前:デフォルトの名無しさん mailto:sage [2012/12/06(木) 22:03:00.61 ]
>>446
本当だ…
なんでさっきまでできてたんだろう
間違ってマイナス追加しちゃったのかもしれないけど記憶にないw
ありがとうございました助かりました



448 名前:デフォルトの名無しさん mailto:sage [2012/12/08(土) 18:23:57.54 ]
質問良いでしょうか?
サクラエディタの置換処理の[該当行マーク]で取得範囲のテストをしています。

フルパスからドライブレターや(ネットワーク越しの)PC名を一発で切り出したいのですが
どのようにすれば良いでしょうか?

c:\windows\system32\drivers\etc\hosts
\\安藤PC\共有\excelデータ\

といった環境で、[c]や[安藤PC]を切り出したいです。
([^\\]+?)[\\:] と言うところまでこれたのですが、
行内で複数一致してしまい、うまく切り出せません。

449 名前:デフォルトの名無しさん [2012/12/08(土) 19:15:47.14 ]
テストは一切してない
こんな感じか?
^(
([^\\ ]+): #頭から:の手前までの(*\と半角スペース*以外で1字以上)
|
\\\\([^\\\: ][^\\\:]*) #頭の\\の次から(*\と半角スペース*以外で1字)(*\と:と半角スペース*以外で1字以上)
)

450 名前:デフォルトの名無しさん mailto:sage [2012/12/08(土) 19:40:05.98 ]
>>448
文字クラスの外で使う^が行頭ってことがわかれば
自力でいけそうな感じだな、がんばれよ。

451 名前:デフォルトの名無しさん mailto:sage [2012/12/08(土) 20:03:40.80 ]
>>449
返信ありがとうございます
しかしながら[c:][\\安藤PC]となってしまい、コロンや\\が残留するようです。
このコロンや\\を一発で除去したいのが目的なので…

>>450
^が行頭は知ってます。
^ $ . + * ? [ ][^ ] ( ) | \\ \d \s \r \n \t $1 $2
単純な構造なら、↑ここらへんは書けますが、複雑になったり
回数指定や16進とかになると解説読んでなんとか…というレベルです。

2週なら[行頭の \\ 削除]、[行頭から最初の \ : まで取得]で簡単な話なんですが

452 名前:451 mailto:sage [2012/12/08(土) 20:14:29.95 ]
レス直後に自己解決しました。
$1一発で取るんじゃ無くて、>449さんに $2$3 で取得すれば行けますね。
ありがとうございました。

453 名前:デフォルトの名無しさん mailto:sage [2012/12/08(土) 20:16:56.13 ]
別パターン

^(\\\\)?([^\\:]+)
\2

454 名前:デフォルトの名無しさん mailto:sage [2012/12/08(土) 20:17:26.73 ]
解決したみたいだけどサクラエディタで質問する時は本体バージョンと、
使ってる正規表現DLLとそのバージョンを書くべき

455 名前:デフォルトの名無しさん mailto:sage [2012/12/08(土) 20:27:53.85 ]
自分だったら\や\\を\tに変換して、エクセルで作業しちゃう。

456 名前: 忍法帖【Lv=2,xxxP】(1+0:5) mailto:sage [2012/12/15(土) 23:17:38.36 ]
${2}1

457 名前:デフォルトの名無しさん mailto:sage [2012/12/20(木) 20:36:10.03 ]
同じ文字列が繰り返されるような文字列にマッチさせるようにするにはどのように記述したら良いでしょうか?
ex)
apple_and_orange/1687646/abcde/abcde/hogehoge
apple_and_orange/5646818/fghijk/fghijk/hogehoge
apple_and_orange/1984687/lmnop/lmnop/hogehoge

/abcde/abcde/や/fghijk/fghijk/のように同じ文字列が繰り返されます
これが良い例えかどうかは分かりませんが、参照で説明したら
apple_and_orange/\d+/$1/$1/hogehoge
といった感じです



458 名前:デフォルトの名無しさん mailto:sage [2012/12/20(木) 21:00:31.33 ]
/([^/]+)/\1

459 名前:デフォルトの名無しさん mailto:sage [2012/12/20(木) 21:08:48.05 ]
>>458
ありがとうございます

460 名前:デフォルトの名無しさん mailto:sage [2013/01/03(木) 20:52:32.91 ]
Javaで正規表現を使ってHTMLの終了タグを順番に一つずつ抽出しようと思ったのですが失敗しました。
\\[/.*\\]
Hello regex world! [a href="foo.html"]This is link text.[/a] [strong][em]woohooo![/em][/strong]
⇒[/a] [strong][em]woohooo![/em][/strong]

いろいろ調べて最短修飾子を使えばいいのかなと思いましたがこれも失敗しました。

461 名前:460 mailto:sage [2013/01/03(木) 20:54:16.82 ]
すいません途中で間違えて描いてしまいました。
最短一致で次のように試して失敗しました。

\\[/.*\\]+?
Hello regex world! [a href="foo.html"]This is link text.[/a] [strong][em]woohooo![/em][/strong]
⇒[/a] [strong][em]woohooo![/em][/strong]

結果は変わりませんでした。
何が間違っているのでしょうか?

462 名前:デフォルトの名無しさん mailto:sage [2013/01/03(木) 21:08:53.67 ]
\[/[^\]]+\]

エスケープの仕方が間違ってる

463 名前:デフォルトの名無しさん mailto:sage [2013/01/03(木) 21:17:19.18 ]
回答してから気がついたんだけど、コレほんとにHTMLなの?
JAVAでは<>が[]で表現されるとか?

464 名前:デフォルトの名無しさん mailto:sage [2013/01/03(木) 21:18:30.69 ]
>>462
回答ありがとうございます!
Javaだと角かっこをエスケープする\をエスケープするために\\[とか\\]としないとエラーになるようで、
\\[/[^\\]]+\\]
としたら無事一つずつ抽出できました!

[^]で角かっこに含まれない一文字にマッチという意味のようなのでこれは
/と]以外にマッチするということですか?

465 名前:デフォルトの名無しさん mailto:sage [2013/01/03(木) 21:19:32.75 ]
>>463
すいませんHTMLじゃなくてHTMLのtextareaの中に含める独自タグでした……括弧が違うだけで原理は一緒です。

466 名前:デフォルトの名無しさん mailto:sage [2013/01/03(木) 21:24:37.24 ]
エスケープしてるほうの[]は単なる文字で
素の[]は文字クラス

なので\\[/[^\\]]+\\] は
[]に囲まれた]以外の1文字以上の任意の文字列にマッチ

467 名前:デフォルトの名無しさん mailto:sage [2013/01/03(木) 21:27:04.49 ]
あ、/忘れた

[]に囲まれた先頭が/の]以外の1文字以上の任意の文字列にマッチ

文章にすると逆に分かりづらいな
日本語のうまい他の人に期待



468 名前:デフォルトの名無しさん mailto:sage [2013/01/03(木) 21:36:41.12 ]
エスケープ文字が邪魔でわかりにくかったので<>で見てみました。
</[^>]>

こうなりますよね……
</と>に囲まれた>以外の1文字以上の任意の文字列にマッチ

Hello regex world! <a href="foo.html">This is link text.</a> <strong><em>woohooo!</em></strong>


</

>
に囲まれた
a> <strong><em>woohooo!</em></strong>
とはならない理由がいまいちつかめてないです……たぶん[^>]の意味がちゃんと理解できてないんだと思います。
詳しい解説感謝です!

469 名前:デフォルトの名無しさん mailto:sage [2013/01/03(木) 21:39:05.91 ]
間違えました、

</

>
に囲まれた
a> <strong><em>woohooo!</em></strong

です。

470 名前:デフォルトの名無しさん mailto:sage [2013/01/03(木) 21:42:43.41 ]
あ、aタグの後ろの>で引っかかってaまでが[^>]の部分とみなされたってことですかね?
そして後ろに囲む>がくっついたと。
なんとなくわかったかもです!

471 名前:デフォルトの名無しさん mailto:sage [2013/01/03(木) 21:47:55.58 ]
解説書いてたら自己解決してたでござる。

それであってるよ。
あと、念のため
</[^>]>
じゃなくて
</[^>]+>
ね。

472 名前:デフォルトの名無しさん mailto:sage [2013/01/03(木) 21:55:38.52 ]
あっ、+が無いと<と>の間に何もない時マッチしないですね
丁寧にほんと感謝です!

473 名前:デフォルトの名無しさん mailto:sage [2013/01/04(金) 04:32:05.31 ]
そういうときは事前に【 】などに変換しておくと、ややこしくならなくて良いよ。

474 名前:デフォルトの名無しさん mailto:sage [2013/01/04(金) 22:19:43.90 ]
>>473
遅くなりましたがアドバイスありがとうございます!

475 名前:デフォルトの名無しさん mailto:sage [2013/01/04(金) 23:51:26.93 ]
後方参照で$1の後に特定の数字を続けたいんだけど、どう書けばいいんだろう
$12とか書くと、当然12番目のグループと解釈されて駄目

476 名前:デフォルトの名無しさん mailto:sage [2013/01/04(金) 23:57:52.97 ]
${1}2

477 名前:デフォルトの名無しさん mailto:sage [2013/01/04(金) 23:59:46.88 ]
ああごめん
ググッたら一番上に出てきたわ
本当めんご



478 名前:デフォルトの名無しさん mailto:sage [2013/01/05(土) 07:30:32.86 ]
へぇ。知らなんだ。
ずっと"$1\x32"みたいなメンドくさいことしてたわ。
横からおいしくいただきましたw

プログラミング言語関連の調べ物って、ググるにしても
キーワードが"$"とか"#"みたいな記号だったりして難しいよね。

479 名前:デフォルトの名無しさん mailto:sage [2013/01/05(土) 08:13:02.35 ]
後ろからもおいしく頂きます。

480 名前:デフォルトの名無しさん mailto:sage [2013/01/07(月) 00:10:04.48 ]
boost regexでの話なのですが、後読みが使えないのですが何とかして先読みで代用できないものでしょうか?

先読み後読みの仕組みもそこそこにしか理解してないものの、無理そうな気配は感じております
が、この道の先人であるところの皆様なら何かすごい裏技をご存知なのではと一縷の望みを託しに参上いたしました

481 名前:デフォルトの名無しさん [2013/01/07(月) 00:37:46.83 ]
後読みって戻り読みの別称でいいんだっけ?

482 名前:デフォルトの名無しさん mailto:sage [2013/01/07(月) 00:43:41.18 ]
はい。英語ではlook-behindと書かれる↓です
(?<=),(?<!)

483 名前:デフォルトの名無しさん mailto:sage [2013/01/07(月) 00:43:55.04 ]
>>480
可変長戻り読みの正規表現を使おうとしてるんじゃないの?
ttp://jp.emeditor.com/modules/newbb/viewtopic.php?viewmode=flat&topic_id=239&forum=3

もうちょっと具体的にマッチさせたい対象データと
boostの制限で通らなかった正規表現パターンを書いてもらわないと
アドバイスしづらい

484 名前:デフォルトの名無しさん mailto:sage [2013/01/07(月) 00:52:54.44 ]
>>483
それです
可変長というのがよく分かりませんが

具体的には、
(?<!やす|ひろし|てつや)さん
で検索すると
のりこさん、ちぐささん、ひろしさん、てつやさん
の内 のりこさん と ちぐささん のさんがマッチしますが、(?<=),(?<!)が仕様上無いとのこと

どうにかなりませんでしょうか……?

485 名前:デフォルトの名無しさん mailto:sage [2013/01/07(月) 03:44:19.04 ]
> (?<=),(?<!)が仕様上無いとのこと
ある
(?<!やす|(?<=ひ)ろし|(?<=て)つや)さん
でいける

よく調べようね

486 名前:デフォルトの名無しさん mailto:sage [2013/01/08(火) 17:20:32.87 ]
>>485
ありがとうございます
それがいわゆる可変長と言うやつでしょうか
やす、ひろ、てつなら問題なかったと

487 名前:デフォルトの名無しさん [2013/01/08(火) 21:09:21.66 ]
行頭と行末にリストタグを追加したいのですが、うまくいきません。。。
秀丸使っています。。どのように書けばいいのでしょうか??

あああ
いいい
ううう

↓望む結果

<li>あああ</li>
<li>いいい</li>
<li>ううう</li>



488 名前:デフォルトの名無しさん mailto:sage [2013/01/08(火) 21:37:20.10 ]
(.*)
<li>\1</li>

489 名前:デフォルトの名無しさん mailto:sage [2013/01/08(火) 21:49:48.37 ]
もし空行があった場合<li></li>だけの行になってしまうと多分まずいので
*より+のほうがいいと思う

490 名前:デフォルトの名無しさん mailto:sage [2013/01/08(火) 22:01:39.99 ]
^(.*\S.*)$

スペースだけの行もカット。\Sは詳説・正規表現でよく出てくる。

491 名前:デフォルトの名無しさん mailto:sage [2013/01/08(火) 22:05:41.50 ]
つまりだな
質問者はテンプレ使えって事だ

492 名前:デフォルトの名無しさん mailto:sage [2013/01/08(火) 22:14:53.93 ]
テンプレの要項は満たしてるけど説明欄が不十分

493 名前:デフォルトの名無しさん mailto:sage [2013/01/09(水) 16:51:43.53 ]
^(\s*)(.+)$
\1<li>\2</li>
インデント殺さないでほしいってなったときに。

494 名前:デフォルトの名無しさん mailto:sage [2013/01/09(水) 20:47:05.50 ]
>> 488-493
質問者です。どうもありがとうござました。遅くなりました。

これでできました。
(.+)
<li>\1</li>

^(.*\S.*)$
<li>\1</li>

スペースの違いがあまりわからず、、いろいろと深いですね><

495 名前:デフォルトの名無しさん mailto:sage [2013/01/18(金) 11:20:51.12 ]
PHPにて、2chで見るようなレスアンカーを検知して
その内容を区分けするようなプログラムを組んでいます。

例えば$testというstring型の中から
特定のアンカーがついた文章ごとに
配列に格納するようにstrposを使い
for($i = 0; $i <= 1001; $i++){
$res = '>>'.$i.'';
if(strpos($test, $res) !== false)){
//配列に入れる諸々処理
}}
という風に、簡略化はしてますがこんなのを書いたところ

動いてはくれるのですが、>>1とついた文章と>>15とついた文章が区別できてません。
>>1がついた文章用の配列の中に
>>15がついたのまで入っちゃいます。
その逆もです。
うまくそれらを区別するにはどんな正規表現を使えばいいのか、どなたかご教授願います。。

496 名前:デフォルトの名無しさん [2013/01/18(金) 12:09:05.36 ]
皇潤
数字以外を検出

497 名前:495 mailto:sage [2013/01/18(金) 13:22:49.52 ]
>>496
レスありがとうございます。
確かに>>数字、の後には何かしら数字以外がくるので桁数を指定できますねなるほど…。

しかし、preg_matchで'/>>'.$i.'\D/'を条件にしてみましたがうまくいきません。
書き方が悪いのでしょうか?
降順もググッたりしましたがもう少しヒントを…
forをデクリメントで回したりしても結果変わらず…です…。



498 名前:デフォルトの名無しさん [2013/01/18(金) 13:33:13.42 ]
自分の投稿内容よく読めよ

499 名前:495 mailto:sage [2013/01/18(金) 14:02:53.49 ]
>>498
正規表現と全然関係ないとこでミスってました。
'/>>'.$i.'\D/'こいつでいけてたんですが
preg_matchは !== false じゃなく
=== 1 で条件つけるべきだったんですね。

ありがとございましたー。

500 名前:デフォルトの名無しさん mailto:sage [2013/01/18(金) 23:39:45.21 ]
アフィかな、がんばれ。

501 名前:デフォルトの名無しさん mailto:sage [2013/01/19(土) 01:52:56.64 ]
ちなみに、

\D



(?!\d)

にするのが模範解答な。\Dの場合、数字以外の文字が必ず必要だが、(?!\d)の場合、
後ろに文字が存在しない場合でもマッチする。まぁ実用的には変わらないかもだが。

502 名前:デフォルトの名無しさん mailto:sage [2013/01/19(土) 11:10:26.52 ]
笑いを取るための模範解答ってこと?

503 名前:デフォルトの名無しさん mailto:sage [2013/01/19(土) 17:19:26.64 ]
>>501
その部分については安価のみを除外したい意図があるのかもしれないし。
数字をキャプチャするのが模範解答()には必要だと思うよ

504 名前:デフォルトの名無しさん mailto:sage [2013/01/20(日) 01:15:05.18 ]
アンカのみを除外とか・・数字のキャプチャとか・・何言ってんだこいつは。
プログラミング出来ない馬鹿は黙ってろ。

505 名前:デフォルトの名無しさん mailto:sage [2013/01/21(月) 01:22:11.29 ]
>>504

506 名前:デフォルトの名無しさん mailto:sage [2013/01/21(月) 12:23:08.55 ]
キャプチャはいらないよね。それより全角

507 名前:503 mailto:sage [2013/01/21(月) 13:41:04.68 ]
>>504
for($i = 0; $i <= 1001; $i++){
$res = '>>'.$i.'';
プログラミングできる頭いい人ならこの時点でクソプログラムだってつっこめよ。



508 名前:デフォルトの名無しさん mailto:sage [2013/01/21(月) 16:31:34.57 ]
人のミスを探す前に自分のミスを認めて謝罪して土下座するのが先じゃないの?
それが出来ないなら明日から来なくていいよ?

509 名前:デフォルトの名無しさん mailto:sage [2013/01/21(月) 16:52:05.30 ]
あ、、アンカのみ除外ってそういうことか。
計算量を考えたら数字のキャプチャも必要か。。
プログラミングできない馬鹿はこちらでした。すみませんでした。

510 名前:デフォルトの名無しさん mailto:sage [2013/01/22(火) 01:07:37.81 ]
●正規表現の使用環境
 秀丸エディタver8.11マクロ(正規表現:HMJRE.DLL V3.41)

●検索か置換か?
 置換

●説明
 ”(ダブルクォーテーション)で囲まれた文字列の中のある文字を置換したい。

●対象データ
 BASICテキスト
 10 A$="AR_2_ZBG":B$="_GDA_"
 20 C=D_2
 30 G$="_":E=F_2:IF G$>"_" THEN 100

511 名前:デフォルトの名無しさん mailto:sage [2013/01/22(火) 01:10:15.54 ]
>>510の続き

 例えば上記のようなBASICテキストにおいて、行番号10,30の""の中にある_を-に変換したい。
 但し、行番号20のC=D_2と30のE=F_2の_は変換しない。
 なお上記のBASICテキストの””内は_の他に任意の半角文字とします。


●希望する結果
 10 A$="AR-2-ZBG":B$="-GDA-"
 20 C=D_2
 30 G$="-":E=F_2:IF G$>"-" THEN 100

512 名前:デフォルトの名無しさん mailto:sage [2013/01/22(火) 02:16:32.06 ]
homepage3.nifty.com/k-takata/mysoft/bregonig.html
このdllが使えれば可能。

使えなければその処理をするためのプログラム作るか、手動で。

513 名前:デフォルトの名無しさん mailto:sage [2013/01/22(火) 02:54:25.90 ]
>>510
正規表現だけでやろうとするな
秀丸なら追加の条件を使うのが定石

514 名前:512 mailto:sage [2013/01/22(火) 04:20:59.49 ]
>>512のdllはダメだった、異常終了する。互換性ない。>>513が最善と思われ。

515 名前:デフォルトの名無しさん mailto:sage [2013/01/22(火) 06:43:25.79 ]
>>514
これなら互換性あるよ
ttp://homepage3.nifty.com/_htom/macro/macro_dll.html#label-23

516 名前:510 mailto:sage [2013/01/22(火) 13:07:41.94 ]
>>512>>513>>514>>515
皆様、ご回答有難うございます。
別のDLLを使う事や追加の条件を使う事を考えます。
昨日連続で書き込み出来なかったのですが、
 replaceall "([<|>|=]\"[^\"]*)_([^\"]*\")"
, "\\1\-\\2" , regular;
このようなマクロを考えて悩んで相談しました。
有難うございます。

517 名前:デフォルトの名無しさん mailto:sage [2013/01/23(水) 06:35:15.85 ]
[<|>|=] ←これだと 「|」 も検索されちゃうよ、[<>=] ね。



518 名前:510 mailto:sage [2013/01/23(水) 12:52:35.13 ]
>>517
有難うございます。ご指摘の通り「|」も検索されていました。
頭をもう一度整理します。

519 名前:デフォルトの名無しさん mailto:sage [2013/01/23(水) 15:29:07.46 ]
文字列に複数回数字が出現する時に
最後の数字だけ判定するには正規表現はどう書けばいいでしょうか?

具体的には
"foo 111 333 bar 222-hoge"
では"222"にマッチして
"aaa 22"
とある場合には 22 にマッチさせたいです。

環境はrubyです。

520 名前:デフォルトの名無しさん mailto:sage [2013/01/23(水) 16:02:28.10 ]
>>519
\d+(?!.*\d)
先読み慣れてないけど、こんな感じかな。

521 名前:デフォルトの名無しさん [2013/01/23(水) 16:03:41.71 ]
[\d]+[^\d]*$

522 名前:デフォルトの名無しさん mailto:sage [2013/01/23(水) 18:21:29.78 ]
>>520
動きませんでした…。
>>521
ありがとうございます。
希望の動作ができました!

523 名前:デフォルトの名無しさん mailto:sage [2013/01/23(水) 20:07:29.60 ]
>>522
www.rubular.com/r/Rg66E8ONpE
なんか環境が違うのかな、ともあれ>>521で動いたなら良かった

524 名前:デフォルトの名無しさん mailto:sage [2013/01/23(水) 21:21:04.59 ]
環境っつーか間違ってるから動かないんだろ

525 名前:デフォルトの名無しさん mailto:sage [2013/01/23(水) 22:16:41.32 ]
繰り返しの後ろに先読み否定を置くと落とし穴になることある。

(?>X+)(?!Y)

みたいに前の繰り返しを強制的に最長消費させれば落とし穴を埋められる。

526 名前:デフォルトの名無しさん mailto:sage [2013/01/24(木) 23:15:48.24 ]
test(100) という文字列があって、(100)にマッチさせたいのですが、
\(.*\) ←この正規表現ではマッチしませんでした
wikiを呼んだら
>>"\(" や "\)" で囲まれた表現に続く "*" は無効とされる。しかし、一部の環境ではそうならない。
と書いてありました。
それでは(100)にマッチするパターンはどう記述するのでしょうか?

527 名前:デフォルトの名無しさん mailto:sage [2013/01/24(木) 23:29:31.94 ]
まず環境が分からない



528 名前:デフォルトの名無しさん mailto:sage [2013/01/24(木) 23:34:29.13 ]
>>527
QtというC++のライブラリです
Qtのスレもあるんでそっちで聞いたほうがいいですかね?

529 名前:デフォルトの名無しさん mailto:sage [2013/01/25(金) 06:47:51.71 ]
マルチ

530 名前:デフォルトの名無しさん mailto:sage [2013/01/25(金) 07:45:56.09 ]
>>529
もう解決してるね。(>>526)

【RAD統合環境】 Qt 総合スレ 14 【Win/Mac/Linux】
toro.2ch.net/test/read.cgi/tech/1344830647/596-598

531 名前:デフォルトの名無しさん mailto:sage [2013/01/25(金) 14:46:31.09 ]
>>516
まだいる?いるなら>>515のライブラリで動くの作るよ?

532 名前:デフォルトの名無しさん mailto:sage [2013/01/26(土) 13:03:18.05 ]
正規表現を身につけようと思ってググったら
正規表現練習ツールってのを見つけたんですけど
どうなんですか?

533 名前:デフォルトの名無しさん mailto:sage [2013/01/26(土) 13:18:17.27 ]
練習用

534 名前:516 mailto:sage [2013/01/26(土) 20:22:42.91 ]
>>531
いますよー。もし可能でしたらお願い致します。<(_ _)>
結局、正規表現だけでは難しかったので、
取りあえずマクロと組み合わせて動かしています。

535 名前:デフォルトの名無しさん mailto:sage [2013/01/26(土) 21:40:31.13 ]
>>534
鬼車dllで動くものはもう出来てるんだけど、秀丸用のdllって独自の改変が入ってるらしくて期待した通りに動かない・・
www42.tok2.com/home/proxo/rep/

違いを探して直すまでもう少しかかるから1日ほど待って。

536 名前:516 mailto:sage [2013/01/26(土) 22:51:09.97 ]
>>535
お時間を取らせてしまい申し訳ないです。了解致しました。
正規表現_part10_res510も拝見しました。
私はマクロで、正規表現で『[<>=]"文字"の中の最初の「_」】
をマッチさせた上で、
その後は1文字ずつ「_」があるか「"」が出るまで調べ、
「_」があれば都度、「_」を削除、「-」を挿入する処理を繰り返してます。

537 名前:デフォルトの名無しさん mailto:sage [2013/01/27(日) 04:46:22.44 ]
>>536
おまたせです。書き込むときに長すぎると怒られたので【検索欄】を2行に分割してます。(一行に繋げて使って下さい)

【検索欄】
(?<C1>(?>(?:[^"\\_]|\\\p{ASCII})*)){0}(?<C2>(?:\g<C1>|_)*){0}(?:^(?<CAP1>(?:\g<C2>"\g<C1>")*\g<C2>"\g<C1>)_
|\G(?<=.)(?<CAP2>\g<C1>(?:"(?:\g<C2>"\g<C1>")*\g<C2>"\g<C1>)?)_)
【置換欄】
\3\4-

これの動作は
--------------------------------
カッコ外"カッコ内"カッコ外"カッコ内"
--------------------------------
というように、"が出現するごとにカッコの外か内かを判定してます。

よって、"の数が合わない場合、誤作動します。
-----------
〜"〜"〜"〜
-----------
↑最後の〜がカッコ内と判定される。

また、\"のエスケープに対応しています
------------
〜"〜\"〜"〜
------------
↑正常に動く。



538 名前:デフォルトの名無しさん mailto:sage [2013/01/27(日) 05:00:40.98 ]
この動作で問題がある場合は言って下さい。
[<>=]を判定に付けたり、"の数が合わないときは最初から置換をしない、といったことが可能です。

↓この正規表現のソースみたいなもの。
www42.tok2.com/home/proxo/rep/index.html
秀丸用ライブラリ(hmonig.dll)のメモ的なものも書いておきました。
興味のある方はどうぞ。(無理に読まなくていいです)

今回作成に使った正規表現エディタ。↑のファイルを読み込んで編集出来ます。
ttp://1st.geocities.jp/neeetest/RepStrTool_2.8.zip

539 名前:516 mailto:sage [2013/01/28(月) 04:47:14.90 ]
>>537
すごい、完璧に動作しました!有り難く使用させて頂きます。
記載頂いた表現の中身をまだ理解しきれていないので勉強します。
今回は誠に有難うございました。また返答が遅くなり
申し訳ございませんでした。

540 名前:デフォルトの名無しさん mailto:sage [2013/01/28(月) 09:48:29.09 ]
>>539
丁寧にどうもです。後から手を加えやすい作り方をしたので何か要望があればお気軽にー。

541 名前:デフォルトの名無しさん mailto:sage [2013/01/30(水) 11:50:25.72 ]
マクロでやれば簡単なのに

542 名前:デフォルトの名無しさん mailto:sage [2013/01/31(木) 22:50:54.28 ]
●正規表現の使用環境
sakuraテキストエディタ (bregonig.dll ver3.02 with Onigma 5.13.2)

●検索か置換か?
 置換

●説明
入れ子のデータを分離したい。

●対象データ
(あいう[えお])

これをキャプチャして、(あいう)[えお]と分離したいです。

よろしくお願いします。

543 名前:デフォルトの名無しさん mailto:sage [2013/02/01(金) 05:15:18.17 ]
(?:\(([^\(\)\{\}]*)\[([^\(\)\{\}]*)\]\))
($1)[$2]

544 名前:>>543 mailto:sage [2013/02/01(金) 15:54:50.12 ]
ありがとうございます。
試してみます。

545 名前:デフォルトの名無しさん [2013/02/03(日) 06:34:15.67 ]
正規表現の定義は
スレッドプロセスに聞いてくれ






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<135KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef