Regular Expression(正規表現) Part15at TECH
Regular Expression(正規表現) Part15 - 暇つぶし2ch262:デフォルトの名無しさん
20/06/19 18:07:51.43 a2rlVyD0.net
ひょっとするけど
タグ関係なく単に各行を""で括るってだけなんじゃ?

263:デフォルトの名無しさん
20/06/19 18:24:29.90 a2rlVyD0.net
スニペット登録でググってみたら
jsonで記述と書かれてる
やっぱりタグは無関係で
行の前後を""で括るだけだし、カンマ区切りも要る
"Inner": {
"prefix": "in",
"body": [
"<section id=\"$1\">",
"\t<div class=\"inner\">",
"\t\t$2",
"\t</div><!-- .inner -->",
"</section>"
],
},

264:デフォルトの名無しさん
20/06/19 18:36:21.20 LA4wBl0H.net
え、そうなのですか、、、

265:デフォルトの名無しさん
20/06/19 18:57:56.53 a2rlVyD0.net
そもそもキー入力の


266:短縮だし、基本はテンプレート登録だ "Print to console": { "prefix": "log", "body": [ "console.log('$1');", "$2" ], "description": "Log output to console" あと、スニペット登録入力用のvscode拡張機能もあるようだ



267:デフォルトの名無しさん
20/06/19 21:44:28 q14TQ9ke.net
ggrks
URLリンク(www.google.com) スニペット 登録 拡張

268:デフォルトの名無しさん
20/06/20 00:03:50 D9McnEc6.net
#一行目
AAAランダム文字列1AAAランダム文字列2BBBランダム文字列3BBBランダム文字列4CCC
#二行目
AAAランダム文字列5BBB

このような文章があって
AAAランダム文字列2BBB
だけを1回の処理で抽出することは可能ですかね?
AAA~CCCで挟まれ、かつAAA~BBBの真の最短マッチというのでしょうか
二行目は抽出したくないです

AAA((?!AAA).)*CCC

AAA((?!AAA|BBB).)*BBB

と2回の処理ではできたのですがどうも悔しいです

269:デフォルトの名無しさん
20/06/20 00:10:55 GUrzgoSo.net
>>260
AAA.*(AAA.*?BBB).*CCC

270:デフォルトの名無しさん
20/06/20 00:29:48.90 Spmc6WsU.net
ランダム文字列の最初(最後)の文字がA(B)だった時は?

271:デフォルトの名無しさん
20/06/20 00:44:31.03 Spmc6WsU.net
>>177
画像を右クリック、キャッシュ処理-NGファイル
リンクからでも出来るが再度取得しに行ってしまうのが無駄になるかも

272:デフォルトの名無しさん
20/06/20 00:44:59.32 Spmc6WsU.net
誤爆スマン

273:デフォルトの名無しさん
20/06/20 00:52:46 D9McnEc6.net
>>261
早速ありがとうございます
ですがそのやり方ですと自分が確認した限り最初のAAA~CCCまで全て抽出されてしまうようです

言い忘れてしまい申し訳ないのですがperl正規表現を使いgrepで抽出しようとしています

>>262
すいませんわかりやすくAAAと表記していますが実際はhttpsから始まるURLでBBBも複雑な固定文字列ですのでまず連続することはないと思います
あったとしてもそれは仕方ないのでここでは考えないものとしていただければ…

274:デフォルトの名無しさん
20/06/20 02:01:55.18 GUrzgoSo.net
>>265
それは正規表現の問題じゃなくgrepの使い方の問題で
キャプチャグループを取り出せてないだけだと思う
pcregrep -o1 'AAA.*?(AAA.*?BBB).*CCC' <input>
とか
grep -oP 'AAA.*?¥K(AAA.*?BBB)(?=.*?CCC)' <input>
とか工夫して

275:デフォルトの名無しさん
20/06/20 02:35:31.58 D9McnEc6.net
>>266
失礼しました
grepの使い方が悪かったのですね
そちらの方法で無事抽出できました
ありがとうございました

276:デフォルトの名無しさん
20/06/21 11:54:44 RSezRE5h.net
マークダウンのマッチのさせ方について
この2つのうち、上だけをマッチさせたいです
#半角スペースh1
#半角スペース半角スペース半角スペースh1

しかし
^# .*$
だと、両方マッチします。半角スペースが1つの場合のみマッチさせられるでしょうか

277:デフォルトの名無しさん
20/06/21 12:19:16.08 1s00JmZm.net
^# [^ ]

278:デフォルトの名無しさん
20/06/21 14:46:34 RSezRE5h.net
ありがとうございます

# h
の部分だけマッチします
一文字の繰り返しの部分は、どう指定してるんでしょうか?

279:デフォルトの名無しさん
20/06/21 14:58:06.74 wEwARBW2.net
[^ ]+

280:デフォルトの名無しさん
20/06/21 15:46:15.97 RSezRE5h.net
だとスペースがマッチしません
ありがとうございます

281:デフォルトの名無しさん
20/06/21 16:11:36.93 1s00JmZm.net
>>2

282:デフォルトの名無しさん
20/06/21 18:30:44.16 RSezRE5h.net
^#[ ]([^ ].*)$
これでいけたブリ

283:デフォルトの名無しさん
20/06/27 20:14:07.00 V+005EHj.net
chmateから改行コードが見えるレスのNGワードはどうやって登録すればいいですか?
URLリンク(i.imgur.com)

284:デフォルトの名無しさん
20/06/28 00:20:52.36 x4PVBa+w.net
chmateとやらのスレで聞いた方がいいと思うが

285:デフォルトの名無しさん
20/06/28 20:47:34.83 hqGvkXPW.net
わかる方教えてください
yyyy/mm/dd の形式で、下記のような0埋め処理をしたいのですが、一発処理方法がわかりません



286:蝸ハにあるファイルを秀丸にてgrep置換予定です。空白がジャマすぐる 今後も処理の必要があるので、できれば一発、無理なら2周かな… ex.) 2020/ 6/ 1 ⇒ 2020/06/01 ([0-9]{4})/( [0-9]|[0-9]{2})/( [0-9]|[0-9]{2}) これで全条件拾えるが処理できないし、下記だと3周しないといけないし ([0-9]{4})/ ([0-9])/([0-9]{2}) ⇒ \1/0\2/\3 //月のみ1桁 ([0-9]{4})/([0-9]{2})/ ([0-9]) ⇒ \1/\2/0\3 //日のみ1桁 ([0-9]{4})/ ([0-9])/ ([0-9]) ⇒ \1/0\2/0\3 //両方1桁 どなたか、お願いしますm(_ _)m



287:デフォルトの名無しさん
20/06/28 22:32:55.02 pbfRuAan.net
> 大量にあるファイルを
> 今後も処理の必要がある
スクリプトでやるものじゃね?
以下で2週で出来るが秀丸の正規表現は知らんからヒントにでもして
(?<=\d{4}/) (?=\d/[\d ]\d)
0
(?<=\d{4}/\d\d/) (?=\d)
0
(先|戻り)読みが使えないなら
(\d{4})/ (\d/[\d ]\d)
\1/0\2
(\d{4}/\d\d)/ (\d)
\1/0\2

288:デフォルトの名無しさん
20/06/28 22:57:55.61 CZLL+74z.net
>>277
秀丸は使えないのでうまくいくかは不明だが
検索文字列:\d{4}/\K (?=\d/(?:\d\d\D| \d\D))|\d{4}/\d\d/\K (?=\d\D)|\G\d{1,2}/\K (?=\d\D)
置換文字列:0
\Kがダメなら、(?<=\d{4}/)とかに変えてみる(3箇所)
ただし誤爆は起きるかもしれない

289:デフォルトの名無しさん
20/06/28 23:14:26.22 CZLL+74z.net
なお誤爆の可能性は、
1) ファイル先頭に、 6/28 xxx で始まっていた場合
2) 2020/ 6/28/ 9 xxx とか引き続き/ 9とかがある場合
3)ファイル末尾で、2020/ 6/28(改行コードなし)で終わっている場合は変換されない
 まあ改良すれば3)は問題なくなるけど

290:デフォルトの名無しさん
20/06/28 23:16:24.29 CZLL+74z.net
2)は間違い 2020/ 6/ 8/ 9 とかの場合に訂正

291:デフォルトの名無しさん
20/06/28 23:19:24.85 CZLL+74z.net
あ、1)も間違ってる
6/ 8 xxxに訂正(空白なしで数字1文字で始まる場合)

292:デフォルトの名無しさん
20/06/29 00:31:06.80 G5zcTgI1.net
秀丸なら普通にマクロでプログラム書いた方が楽じゃない?

293:デフォルトの名無しさん
20/06/29 00:32:15.99 1iNHQcBG.net
1)は、\G(?!^)というふうに先頭の場合を除けばいける
残りの2)3)は工夫次第

294:デフォルトの名無しさん
20/06/29 16:30:01.33 sN5cgPC+.net
難しく考えなくても置換対象以外に"/ "が無いなら
/[ ]
/0
で一発

295:デフォルトの名無しさん
20/06/29 16:59:50.16 0ldK0o0F.net
これでできないかい?
FIND:(?<=¥d{4}/[ ¥d]¥d/) (¥d)|(?<=¥d{4}/) (¥d)(?=/)
REP:0$1$2

296:デフォルトの名無しさん
20/06/29 17:05:41.11 0ldK0o0F.net
こっちのほうが確実か。
FIND:(?<=¥d{4}/) (¥d)(?=/[ ¥d]¥d)|(?<=¥d{4}/[ ¥d]¥d/) (¥d)
REP:0$1$2

297:デフォルトの名無しさん
20/06/29 17:28:03.91 sN5cgPC+.net
>>287
それ試した?それが可能な処理系って何?
選択子で両方を対応するなら>>279の用に\G使わないとスペースが両方にある場合に失敗するぞ

298:デフォルトの名無しさん
20/06/29 17:41:18.50 0ldK0o0F.net
>>288
pythonでもCotEditorでもいけるが?
URLリンク(ideone.com)

299:デフォルトの名無しさん
20/06/29 17:54:20 TUm10+y/.net
277 です
皆さんありがとうございます!
レベルが低くて理解できないのもありますが、勉強のためにしっかり精査してみます

>>285
まさにそれですわ
てゆーか別に正規表現使わなくても実現できるという罠
勉強になりました m(_ _)m

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

300:デフォルトの名無しさん
20/06/29 18:05:49.23 sN5cgPC+.net
>>289
で?質問者はなんて書いている?
pythonとかCotEditorとか書いてあるかい?
質問者の環境で失敗する式を書くならせめて
pythonでならこれで出来る、くらい書けやks

301:デフォルトの名無しさん
20/06/29 18:09:28.38 0ldK0o0F.net
>>291
質問者が文句


302:を言うならともかく、なんでお前が切れてるんだよ。 自分が正解書いてるのに余計なこと書くなって言いたいのか?www カルシウムとっとけよ



303:デフォルトの名無しさん
20/06/29 18:13:56.28 sN5cgPC+.net
>>290
なんとなくそうじゃないかなーと思った
俺も昔同じ罠にハマった事あるからw
解決して何より

304:デフォルトの名無しさん
20/06/29 18:25:35.41 sN5cgPC+.net
>>292
あぁ?理由なら書いてんだろ
おまえのような底意地の悪いゴミカスが気に食わないからじゃ
さっさ死ね

305:デフォルトの名無しさん
20/06/29 23:31:59 G5zcTgI1.net
質問者そっちのけの場外乱闘にワロタ

306:デフォルトの名無しさん
20/06/30 01:41:09.48 ZFF7tVch.net
だが、そこがいい

307:デフォルトの名無しさん
20/06/30 13:15:03.17 tIigavUn.net
>>279で\Gの使い方が分かった。thx

308:デフォルトの名無しさん
20/07/02 02:54:39.72 fxvoVb8t.net
アプリからファイアウォールにまで使われる正規表現を標的にした「ReDoS攻撃」とは?
URLリンク(gigazine.net)
ネット中は正規表現を使わないではだめなのか
でもブラウザも中で使っているだろうし

309:デフォルトの名無しさん
20/07/03 10:38:52.53 fe+b4Rno.net
正規表現についてですが、このhtmlの置き換えは一発でできますか?
この前からいろいろ試してるんですが、、
URLリンク(ideone.com)
行頭と行末にダブルクォーテーションをつけ、urlの部分はエスケープしています。
vscodeでスニペットを登録する際に、このようにダブルクオーテーションを使用する必要があるのです。

310:デフォルトの名無しさん
20/07/03 11:07:40.28 cg7dcvev.net
(^<.*?)(".*?)(".*>)$
"$1¥¥$2¥¥$3"
↑vscode内の検索置換
それと全く同じパターンであれば可能だが、dqが複数出てくる場合はできない。
他のパターンも考えたら、
1.dqのみエスケープ、
2.行頭行末にdqをつける
の2アクションにするか、vscodeでそれ用のjsでも書いて処理するか。
スニペット登録したいものをまとめて書き出しておいて2アクションで処理しても大して手間は変わらんだろ。

311:デフォルトの名無しさん
20/07/03 12:32:41.29 fe+b4Rno.net
そうですね 2回でやります

312:デフォルトの名無しさん
20/07/03 13:00:37.53 hVBUXcHj.net
Ruby で、" を、\" に置換してから、
冒頭・末尾に、" を追加する
str = '"ja"'
str.gsub!( '"', '\"' )
puts '"' + str + '"'
#=> "\"ja\""

313:デフォルトの名無しさん
20/07/03 13:11:32.91 yfao6bm4.net
VScodeのプラグインにSnippet Generatorてのがあるみたいだがそれじゃダメなん?

314:302
20/07/03 14:28:11.33 hVBUXcHj.net
漏れなら、Ruby, PowerShell で、
クリップボード経由で変換するスクリプトを書いて、
ダブルクリックで起動できるように、起動部分をVBS で書くかな?

315:デフォルトの名無しさん
20/07/03 14:33:24.34 zEGBQA4b.net
正規表現よりもJSON.strinfigy()を使ったほうが簡単
スニペット用のJSONを出力すればいいだけだからJSでもRubyでも好きなの使えばいい

316:デフォルトの名無しさん
20/07/13 00:17:50.71 e/I4Ji0p.net
JavaScript
const kaoru = '薫'
'[薫子]'.match(`[${kaoru}]`)
'[薫子]'.match(`\[${kaoru}\]`)
'[薫子]'.match(new RegExp(`[${kaoru}]`))
'[薫子]'.match(new RegExp(`\[${kaoru}\]`))
全てマッチしてしまうようですが、マッチさせたくありません
[ や ] そのものを文字として扱って判定するにはmatchの引数をどうすればよいでしょうか

317:デフォルトの名無しさん
20/07/13 00:49:50.36 lkNbIdQ1.net
>>306
それはJSの質問やろ
RegExpコンストラク


318:ターを使って2回エスケープ



319:デフォルトの名無しさん
20/07/13 19:20:45.29 YirsSrYP.net
教えてください。基本的な質問で恐縮です。
20200706T030000Z
SUMMARY:打合せ
LOCATION:中野
DTEND:20200706T043000Z
から、
$1 0300
$2 打合せ
$3 中野
$4 0430
を抜き出すにはどのようにすればよいでしょうか。

320:デフォルトの名無しさん
20/07/13 19:49:46.79 GfOrWnDk.net
^\d{8}T(\d{4}).*+\nSUMMARY:(.*+)\nLOCATION:(.*+)\nDTEND:\d{8}T(\d{4})

321:デフォルトの名無しさん
20/07/14 13:34:31.12 h5j+nt7i.net
今まで何となくで使ってきたけどキャプチャの変数って式に対し1つしか用意されず
部分式呼び出しや量指定子の繰り返しで増やされずに上書きするみたいですね
^(?<y>2020[01]\d[0-3]\dT([0-2]\d[0-5]\d)00Z)(?:\n[^:\n]++:(.*+)){2}\n[^:]++:\g<y>
\1 \2 \3 \4 \5 \6
20200706T043000Z 0430 中野___
どの環境でもこういう仕様なの?

322:デフォルトの名無しさん
20/07/14 13:41:52 tlUY963U.net
>>310
深く考えてなかったがそういうもんだと思ってた
キャプチャグループが増殖するとは考えもしなかった

323:デフォルトの名無しさん
20/07/14 13:50:15.90 tlUY963U.net
もしキャプチャグループが増えるとして
与えられた文字列によって増える順番が異なってくることが考えられるしね

324:デフォルトの名無しさん
20/07/14 21:21:06.51 h5j+nt7i.net
キャプチャしたけりゃ繰り返しや\gで省略するなってことなんだろうけど
気になって出来る方法無いか調べてたら鬼雲で捕獲履歴参照なるものがあった
デフォでは無効になってるみたいだけど
URLリンク(github.com)
補記 5. 実装されているが、既定値では有効にしていない機能
+ 捕獲履歴参照
 (?@...) と (?@<name>...)
 例. /(?@a)*/.match("aaa") ==> [<0-1>, <1-2>, <2-3>]
 使用方法は、sample/listcap.cを参照
 有効にしていない理由は、どの程度役に立つかはっきりしないため

325:デフォルトの名無しさん
20/07/20 23:26:29.84 jWd+3fJB.net
●Regular Expressionの使用環境
サクラエディタ
●検索か置換か?
置き換え
●説明
3の倍数行あるテキストを、3行ごとに1行にまとめたい
●対象データ ※対象データは、必ず半角英数字です。
e
A8
11A9
c
2
LB5
3
d
8X5
●希望する結果
e A8 11A9
c 2 LB5
3 d 8X5
よろしくお願いいたします。

326:デフォルトの名無しさん
20/07/21 00:07:21.07 HQA5x8Lv.net
>>314
サクラエディタはよく知らないけど
一般的な正規表現なら /(.*?)¥n(.*?)¥n(.*?¥n)/g を "$1 $2 $3”で置換すればいいと思う

327:デフォルトの名無しさん
20/07/21 10:14:18.12 7bBDhy0Z.net
(?:^.*+|\G.*+[\r\n]+.*+)\K[\r\n]+(.*+)[\r\n]+
_\1_
"_" は半角sp
最終行末尾に改行が無くても可

328:デフォルトの名無しさん
20/07/21 10:18:39.84 7bBDhy0Z.net
[\r\n]+
は空行がある場合にズレるから使ってる改行文字に直して
CRLFなら\r\n

329:デフォルトの名無しさん
20/07/25 05:22:11.92 ygqLeqBq.net
質問です。デリミタが基本的に「/」が選ばれるのなぜですか?慣例だから?

330:デフォルトの名無しさん
20/07/25 08:47:52 1TMz0fAY.net
人間というのは楽をしようとする生き物なんだ

331:デフォルトの名無しさん
20/07/25 17:47:34.31 bnVhPJSY.net
>>318
ここに来るような人は論理的思考をすると思ってたんだけど、
慣例とか持ち出す奴まで来るのな
|や@なんかと比べれば分かるだろ

332:デフォルトの名無しさん
20/07/26 19:17:16.43 2z9rM+9+B
「ブラック企業社員」のお助けアプリが誕生 開発したのは22歳金髪大学生、開発のきっかけとは?
URLリンク(news.yahoo.co.jp)
レシート買い取りアプリONEの17歳起業家、サービス一時停止から「怒涛の3カ月」で気づいたこと
URLリンク(www.businessinsider.jp)
ビジネス版マッチングアプリ「yenta(イェンタ)」全国展開 開始!
URLリンク(prtimes.jp)
ギフティング「TANP」運営がGCPほかから5億円調達
1日1200件の「リアルギフト」送付も可能に、U25起業家の新たな挑戦
URLリンク(thebridge.jp)
人はこうすれば“ハマる”、源流はゲーマー視点の「幸せ」
URLリンク(project.nikkeibp.co.jp)
アプリ開発での起業は難しくない!成功するために覚えておくべきこと
URLリンク(www.biz.ne.jp)
【稼ぎ方が知りたい!】アプリの開発の収入って実際どれくらい?
URLリンク(itpropartners.com)
ネット関連事業で起業した成功例8選!ネットで成功するには○○が重要!?
URLリンク(www.official.or.jp)

333:デフォルトの名無しさん
20/07/27 13:00:24.19 NlQGNze0.net
●Regular Expressionの使用環境
Ruby2.5
●検索か置換か?
置換
●説明
スペースを削除したい。ただしダブルクオーテーション内は処理対象から除外
●対象データ
ABC, DE F,"G HI"
●希望する結果
ABC,DEF,"G HI"
ダブルクオーテーション内以外に対して処理するって結構ありそうだけど見つからないような・・

334:デフォルトの名無しさん
20/07/27 13:15:08.91 GIKub5S5.net
そのフォーマット通りなのか
あるいは任意でダブルクォーテーションの処理をするのかで変わってくるな

335:デフォルトの名無しさん
20/07/27 14:36:52.94 Dng4VfHm.net
[ ](?![^",\n]*+"(?:,|$))

336:デフォルトの名無しさん
20/07/27 15:27:53.85 OciGuojB.net
(?>".*?"|[^"スペース]++)*+\Kスペース
を削除

337:デフォルトの名無しさん
20/07/28 23:58:50.39 dH+Aps1K.net
HTML中に
<a href="/a.html"><img src="test.jpg"></a>

<img src="test.jpg">
リンクに囲まれた test.jpg または、画像だけののどちらかがあって。
どちらにも引っかかる正規表現が書けません。
PHPの正規表現キボンヌ
自力では2つの正規表現を書いてしのいでいるので、一つで対応できますか?

現状は
リンクに囲まれた画像
/(^.*)(<a href=".*?>\n*<img .*?test.jpg.*?>\n*<\/a>)(.*$)/s
画像のみ
/(^.*)(<img .*?test.jpg.*?>)(.*$)/s
で対応しています。

338:デフォルトの名無しさん
20/07/29 01:26:58.01 W2ZwK0DF.net
/<img[^>]+test\.jpg[^>]+>/g
JavaScript では、これで両方に一致する。
[^>]+ で、> 以外の文字を、1文字以上。
g で、すべての箇所に一致する
test.jpg だと、. は任意の1文字を表すから、意味が異なる。
ドットという文字に一致させるには、\. とエスケープが必要

339:デフォルトの名無しさん
20/07/29 01:58:17.28 yfMsWFOq.net
aタグ含


340:めてマッチさせたいんでね? それでも単純に|で繋げば済む話だと思うけど



341:デフォルトの名無しさん
20/07/29 03:04:25.73 Qbap9rXN.net
あってもなくてもいいものは末尾に?を付ければいいよ
((<a [^>]++>)?(?:<img[^>]+test\.jpg[^>]+>)(</a>)?)

342:デフォルトの名無しさん
20/07/29 05:46:17.91 z6Fnx3oM.net
>>9
これ面白いな。プログラミング授業に採用すべき。

343:デフォルトの名無しさん
20/07/29 11:18:17.76 RU44SEhN.net
>>327
ありがとうございます!
[^>]+ って発想がありませんでした・・。
>>329
ありがとうございます。
++ のところは一つですよね?
こんな感じをベースにやってみようと思います。
URLリンク(regexper.com)

344:デフォルトの名無しさん
20/07/29 11:23:00.16 d73w3j+s.net
>>326
こういうの正規表現じゃなくcss selectorやxpath使った方が簡単だよ

345:デフォルトの名無しさん
20/07/29 14:14:44.18 8IMt+CxM.net
> リンクに囲まれた test.jpg または、画像だけののどちらかがあって
> /(^.*)(<a href=".*?>\n*<img .*?test.jpg.*?>\n*<\/a>)(.*$)/s
> /(^.*)(<img .*?test.jpg.*?>)(.*$)/s
^(?=.*test\.jpg).++$
こういう事では?

346:325
20/07/29 14:47:56.12 RU44SEhN.net
>>332
ありがとうございます。
たしかにその2つのほうがphpソースとしては分かりやすくなりそうですね。

347:デフォルトの名無しさん
20/07/31 01:03:19 sgil418T.net
>>330
前半はいいけど、後半がきつい
総当たりで力技ぐらいしか思いつかんわ・・・

348:デフォルトの名無しさん
20/08/01 06:04:54.43 Wz14ZhNZ.net
cssなんですが、
margin:10px;padding:10px;border:1px solid red;backgroun-color:red;font-size:16px;
というものがあったとして、正規表現でborderのプロパティと内容だけを削除できないでしょうか?
欲しい結果どす
margin:10px;padding:10px;backgroun-color:red;font-size:16px;
ちなみにborderの値は
1px red solidの場合もあれば
solid 1px redの場合もあります
つまり、borderプロパティに不随する値を消したいのです(´・ω・`)

349:デフォルトの名無しさん
20/08/01 06:13:27.50 xL8Di7oE.net
~; か、;~; の、~の中に、border という文字列が、あれば良いのか?

350:デフォルトの名無しさん
20/08/01 06:32:02.40 Wz14ZhNZ.net
どういうことですか?
borderプロパティとその値を削除したい感じです
border(プロパティ):red 1px solid(値);

351:デフォルトの名無しさん
20/08/01 06:38:27 hnL660kY.net
border[^;\n]++;

352:デフォルトの名無しさん
20/08/01 06:52:53.24 GqyTFtiM.net
\rも入れといたほうがいいだろ

353:デフォルトの名無しさん
20/08/01 06:59:35.99 GqyTFtiM.net
あとborder-color:~とかも消えちゃうね

354:デフォルトの名無しさん
20/08/01 07:21:39.09 GqyTFtiM.net
あとプロパティじゃなくて値やコメントにborderって入る可能性が無いかな?
\bborder\s*:[^;}\r\n]++;?
ぐらいがいいのではないかな
これでもxx-borderとかプロパティがあったり?(無いだろうけど)
、また値を改行されて書かれたりしたらダメなんだが

355:デフォルトの名無しさん
20/08/01 07:38:14 GqyTFtiM.net
処理系がかかれてないので++がダメだったら+に代えるように

356:デフォルトの名無しさん
20/08/01 09:01:52.60 Wz14ZhNZ.net
すみません
meryです

357:デフォルトの名無しさん
20/08/01 12:04:03.32 kkqe9vdZ.net
border(-[a-z]+)?:[^;]+;

358:デフォルトの名無しさん
20/08/01 18:09:27.98 Wz14ZhNZ.net
ありがとうございます
できましたが、解説サイトありませんか?
記号がヒットしないもんで、、、

359:デフォルトの名無しさん
20/08/01 18:40:27.24 hnL660kY.net
URLリンク(github.com)

360:デフォルトの名無しさん
20/08/01 19:21:49 kkqe9vdZ.net
(自分の投稿分だけ)
[]は[]内に挙げた任意の1文字
+は直前の文字だけで構成される文字列,*は0文字以上、+は1文字以上
つまり[a-z]+はa-zの範囲の文字だけで構成される長


361:さ1以上の任意の文字列 ?は直前の文字(列)がないものも対象(あってもなくてもいいということになる) []内先頭の^は否定 つまり[^;]は;以外の任意の文字 まとめると:の前は border, border-width等borderファミリーまとめて対象にしている :の後は:直後~最初の;までが対象 >>345では:以前にスペースがあると対象にならない



362:デフォルトの名無しさん
20/08/01 22:21:06.56 Wz14ZhNZ.net
丁寧にありがとうございます。難しいですね。
border(-[a-z]+)?:の部分はなぜグループ化する必要があるんでしょうか?

363:デフォルトの名無しさん
20/08/01 22:43:25.14 LBbA9Kf+.net
>>349
それは>>348
> まとめると:の前は
> border, border-width等borderファミリーまとめて対象にしている
border:を対象にするために
border(-[a-z]+)?:というborder《【頭に-付いたa-z任意文字列1文字以上】があってもなくても》:指定になってる
>>348のいってる空白云々はborder :のようにrと:の間に空白あるとマッチしないという意
元cssの書き方次第で漏れるからあまり向いてるとは言えない気がする
空白を気にして\s?や[:blank:]?を間に入れ込むのも精神的にツラい
その場限りならいいけど

364:デフォルトの名無しさん
20/08/01 22:57:20.65 Wz14ZhNZ.net
borderとborder-styleなどを対象にする場合、括弧を使うことで不足分を補うというイメージでしょうか?
borderとborder-styleという指定になってるんですね

365:デフォルトの名無しさん
20/08/01 23:05:44.88 LBbA9Kf+.net
>>351
border(-[a-z]+)?: の ? をどこに効かせるか
border-([a-z]+)?: だと - が必須になる(- に ?が効かない)ので border: にマッチしない(border-abcdef: にはマッチする)
正規表現 入門 でググってそれ見ながら ↑のパズルで遊んでみたら?

366:デフォルトの名無しさん
20/08/01 23:08:11.58 oWJPeiSz.net
border-radiusも忘れないであげてください...

367:デフォルトの名無しさん
20/08/01 23:12:41.55 +HD/AULr.net
説明が下手だと良く言われるでしょ?
笑えるくらいグダグダなのなw

368:デフォルトの名無しさん
20/08/01 23:38:46.09 o0eKxhHR.net
>>354
はいどうぞw

369:デフォルトの名無しさん
20/08/02 04:53:04 Q2aVGOnZ.net
Mery(鬼雲の仕様?)なら
border\s*(-[a-z]+)?:[^;]+;
で:前の改行や空白文字も対象にしてくれるけど
エンジンによっては対象にならないし
可能なパターン全てに対応させようと思ったら正規表現メモになってしまう(相当面倒だということ)

どーでもいいけど
[-a-z]か(-[a-z]+)*にした方が良かったか
border-なんとか-かんとか
みたいなのもある?

370:デフォルトの名無しさん
20/08/02 07:34:01.59 WI1GGX9r.net
最小一致のやり方を教えて下さい
<h1>aaa</h1><h1>aaa</h1>
最初のh1要素だけ取り出すことはできないでしょうか?
<h1>(*?)</h1>
これではだめです。
>>352
ありがとう
手を動かします

371:デフォルトの名無しさん
20/08/02 07:46:47 afjdMLlX.net
<h1>[^>]+h1>

[^>]+ は、> 以外の文字が、1文字以上

372:デフォルトの名無しさん
20/08/02 08:08:51.02 7mfh4V7b.net
<h1>(?>.*?</h1>)
<h1>(?>(?s).*?</h1>)
<h1>(?~</h1>)</h1>
<h1><a id="abc">abc</a>
</h1>

373:デフォルトの名無しさん
20/08/02 08:08:54.84 SCuZm8dn.net
^.*?<h1>\K.*?(?=</h1>)

374:デフォルトの名無しさん
20/08/02 08:16:49.14 piHYqXfk.net
(?~</?+h1>)(?=</h1>)

375:デフォルトの名無しさん
20/08/02 08:18:05.24 1ddBclsD.net
あ、ダメだこれ>>361

376:デフォルトの名無しさん
20/08/02 10:46:18.27 WI1GGX9r.net
>>358,359,360
全部だめでした
ちなみにmeryです
いつもいい忘れます
ごめんなさい

377:デフォルトの名無しさん
20/08/02 10:54:32.92 WI1GGX9r.net
>>358
これでいけました
しかし順番にマッチするんですね

378:デフォルトの名無しさん
20/08/02 10:55:57.37 WI1GGX9r.net
順番に置き換えていくならいいですが、全て置き換えを行う場合
>>358だと出来ないですね

379:デフォルトの名無しさん
20/08/02 11:08:50.52 SCuZm8dn.net
削除
^


380:.*?\K<h1>.*?</h1>(.*) \1 ABCに置換 ABC\1



381:デフォルトの名無しさん
20/08/03 01:53:48.18 p6SF3tC+.net
すべてにマッチする、オプションは無いの?

382:デフォルトの名無しさん
20/08/03 03:15:13 /ZQCQ5dx.net
>>366
ありがとう
むずかしい

383:デフォルトの名無しさん
20/08/05 13:11:50.02 zXYtyxDC.net
●Regular Expressionの使用環境
サクラエディタ
●検索か置換か?
置換
●説明
空白を除去するのに\sで検索してますが
アルファベットの文字間では空白を残したい
●対象データ
ジャッキー チェン:Jackie Chan
●希望する結果
ジャッキーチェン:Jackie Chan

384:デフォルトの名無しさん
20/08/05 14:03:13.77 xp5DSzK/.net
スペースの直前直後が[a-zA-Z]ならマッチせず
それ以外ならマッチするという正規表現でいいのかな?
もうちょっと仕様を詰めたほうがいい気がする
John Paul IIの2つ目のスペースは削除?
George W. Bushの2つ目のスペースは削除?

385:デフォルトの名無しさん
20/08/05 14:03:44.33 UoH2gIZd.net
(?<=[^A-Za-z])\s(?=[^A-Za-z])|(?<=[^A-Za-z])\s(?=[A-Za-z])|(?<=[A-Za-z])\s(?=[^A-Za-z])

386:デフォルトの名無しさん
20/08/05 16:38:08.92 zXYtyxDC.net
>>370
スペースの前後ともアルファベットならマッチせず、それ以外ならマッチするです。
その他の条件はありません。ちなみに行頭と行末のスペースにはマッチさせたいです。
>>371
ありがとうございます。行頭が残るようですが希望のことができました。

387:デフォルトの名無しさん
20/08/05 16:57:46.08 UoH2gIZd.net
>>372
^\s++|\s++$|(?<=[^A-Za-z])\s(?=[^A-Za-z])|(?<=[^A-Za-z])\s(?=[A-Za-z])|(?<=[A-Za-z])\s(?=[^A-Za-z])

388:デフォルトの名無しさん
20/08/05 17:13:59 xp5DSzK/.net
ORでは1つで良いような

(?<![a-zA-Z])¥s|¥s(?![a-zA-Z])

389:デフォルトの名無しさん
20/08/05 20:14:19.67 TJuHD2ix.net
ゼロ個でも
\s(?!(?<=[A-Za-z].)(?=[A-Za-z]))

390:デフォルトの名無しさん
20/08/05 21:50:35.87 xp5DSzK/.net
>>375
へぇーー
速度的にも有利っぽいしこのパターン覚えとくわ

391:デフォルトの名無しさん
20/08/06 11:27:45.13 mqEUv0B4.net
成り立ってるそれ?

392:デフォルトの名無しさん
20/08/06 11:59:29.23 04L3Tvl2.net
\s(?!(?<=[A-Za-z].)[A-Za-z])
肯定先読み要らないよね。ある方が見やすい気がしなくもないけど

393:デフォルトの名無しさん
20/08/06 16:39:38.24 LCybI18e.net
374の「選択子がゼロ個」と「集合の否定」の話じゃなければアサーションを入れ子にする必要もないのですよ
\s(?>(?![A-Za-z])|(?<![A-Za-z].))

394:デフォルトの名無しさん
20/08/07 17:33:11.23 wa05pmNjM
【予測】2020年YouTube業界はこうなる。変化の波に乗ろう!
URLリンク(www.youtube.com)
【大予想】ビジネスYouTube界はこうなる。
URLリンク(www.youtube.com)
【全て公開】ビジネスYouTuberの成功において最も大切な3つの能力
URLリンク(www.youtube.com)
YouTubeをやらない人=ビジネスやらない人
URLリンク(www.youtube.com)
祝10万人【登録者の質が高すぎ!脅威的スピード】ビジネス系YouTuberの桁違い収益大公開!
URLリンク(www.youtube.com)
ビジネス系YouTuberの収益と3つの稼ぎ方を紹介
URLリンク(www.youtube.com)
YouTubeで稼げるジャンルを解説する【パクって、すぐに始めよう】
URLリンク(www.youtube.com)
YouTubeで「効率的に稼ぐ仕組み」を解説する【成功例は、EXILEです】
URLリンク(www.youtube.com)
YouTubeを伸ばすコツ【5つの本質論/初心者向けのセミナーです】
URLリンク(www.youtube.com)
【悲報】YouTuberはマジで難しいので、ほぼ挫折すると思う【無理ゲー】
URLリンク(www.youtube.com)
ビジネス系YouTubeチャンネルは一刻も早く開設するべき
URLリンク(www.youtube.com)

395:デフォルトの名無しさん
20/08/10 00:32:29.1


396:5 ID:foQnjRqn.net



397:デフォルトの名無しさん
20/08/10 01:07:48.09 F9d2D5aE.net
>>381
RegEx Labちょうど使ってたので
URLリンク(i.imgur.com)

398:デフォルトの名無しさん
20/08/10 01:16:40.29 rwR0rEzu.net
>>381
$が行末にマッチしてないだけなら、単に改行\Rに置き換えてみてもいいし正規表現の頭におまじない(?m)を足してみてもいい
置換じゃなくて検索なら
(?<=名前:<[^>]{0,99}?>).*?(?=</a>)|(?<=名前:)(?!<).*+

399:デフォルトの名無しさん
20/08/10 01:36:35 foQnjRqn.net
>>382
>>383
こんなに色々なやり方があるんですね……勉強になります。
無事検索できるようになり本当に助かりました。
ありがとうございました!

400:デフォルトの名無しさん
20/08/11 13:59:29.59 JW3Ec0IY.net
grepのperl正規表現オプションを使ってURLのホスト名を抽出したいです
スレリンク(tech板)
URLリンク(www.google.co.jp)
このスレだったら”mevius”
googleなら”www”
「https://」or「http://」と「.」に挟まれた文字列の最短一致でできそうなのですがなぜか上手くいきません
1文字に挟まれたパターンは検索して出てくるのですが、複数文字に挟まれたパターンはあまり出てこなくて、この際はっきりしたいので「〇〇〇と△△△に挟まれた文字列の中身のみを最短一致で抽出」パターンも教えてください

401:デフォルトの名無しさん
20/08/11 14:15:33 47EO3/0I.net
>>385
/https?:\/\/([^./]+)/
grepもperlも知らないけどこんな感じでどうや
△△△が一文字なら△を含まない文字の連続で取るといいと思う
複数文字の場合は知らない

402:デフォルトの名無しさん
20/08/11 14:17:58 oEzBqY+p.net
grep知らずにここに居る人が存在するのか…

403:デフォルトの名無しさん
20/08/11 14:33:07.25 JW3Ec0IY.net
>>386
早速ありがとうございます
ですがそのやり方ですとgrepでは抽出できませんでした
△△△は複数の種類の文字ですね言葉足らずでした
正しくは「ABC」と「DEF」に挟まれた文字みたいなものですね

404:デフォルトの名無しさん
20/08/11 14:36:19.90 giB5l2E5.net
$ cat input.txt
スレリンク(tech板)
URLリンク(www.google.co.jp)
$ grep -Po '(?<=:\/\/).+?(?=\.)' input.txt
mevius
www

405:デフォルトの名無しさん
20/08/11 14:37:41 47EO3/0I.net
>>388
できなかったか、すまん
これは自分には無理だわ
知識もないのにでしゃばるべきじゃなかったな

406:デフォルトの名無しさん
20/08/11 14:45:43.81 giB5l2E5.net
pcregrepならキャプチャグループを番号指定して出力可能
$ pcregrep -o1 ':\/\/(.+?)\.' input.txt

407:デフォルトの名無しさん
20/08/11 15:47:36.92 JW3Ec0IY.net
>>390
いえいえ
>>389
>>391
おー、これでできました
pcregrepのやり方もありがとうございます

408:デフォルトの名無しさん
20/08/11 20:17:56.42 Uga1WByL.net
Javaで
setMethod();
getMethod();
setBake();
みたいなgetter,setterは検出したくなく、
Methoda();
Methodb();
bake();
みたいなset, getで始まっていない()付きの文字列を含む
行を正規表現一行で検出するするのはどうしたらいいのですか?

409:デフォルトの名無しさん
20/08/11 21:07:16.11 xo6O5h7F.net
^(?=.*?\b(?!set|get)[A-Za-z]++\(\);).*


410: ^(?=.*\b(?!set|get)[A-Za-z]+\(\);).*



411:デフォルトの名無しさん
20/08/11 21:55:37.51 Uga1WByL.net
申し訳ありません。
Methoda() {
Methodb(){
c = z.Methoda().Methodb(a,b)
みたいな行は検索の対象にいれたいのですが
よろしくお願いします。

412:デフォルトの名無しさん
20/08/11 22:14:19.40 giB5l2E5.net
もうちょい目的と仕様をはっきりさせたほうがいいんじゃない?
get/setではじまってない()付きの文字列を含む行なら問題ないけど
get/setではじまってないメソッド定義やメソッド呼び出しをもれなく抽出したいということなら
正規表現だときつい気がする
後者ならコードをパースして使ってるメソッド一覧を出力するようなツールを探したほうがいいかも

413:デフォルトの名無しさん
20/08/11 22:27:44 xo6O5h7F.net
^(?=.*?\b(?!set|get)[A-Za-z]++\(\)).*

414:デフォルトの名無しさん
20/08/11 22:36:31 P147PBTZ.net
(?<=(?:\n|^|\.))(?<!set|get)[a-zA-Z]+\(

415:デフォルトの名無しさん
20/08/11 22:52:10.25 Uga1WByL.net
引数が無い and setter, getterではないメソッドを含んでいる行です
ひょっとして正規表現内では表現できないかもしれません。
文脈自由レベルでしょうか?

416:デフォルトの名無しさん
20/09/20 19:06:52.11 shjW7F5c.net
5chのスレタイはこん感じで入っている
<a href="1599110613/l50">1: ぶっちゃけ始めるのにいい言語て何 part3 (78)</a>
<a href="1545032904/l50">2: 文字コード総合スレ Part12 (95)</a>
<a href="1598112455/l50">3: Rust part9 (198)</a>
<a href="1598336253/l50">4: 小6におすすめな言語 (32)</a>
<a href="1594528940/l50">5: C++相談室 part152 (404)</a>
<a href="1596690797/l50">6: Xamarin Part7 (97)</a>
<a href="1598527450/l50">7: くだすれPython(超初心者用) その50【まず1嫁】 (423)</a>
ここからたとえば「言語」とついたスレタイだけ抽出するのは無理だった
<a href="1599110613/l50">1: ぶっちゃけ始めるのにいい言語て何 part3 (78)</a>
<a href="1598336253/l50">4: 小6におすすめな言語 (32)</a>

417:デフォルトの名無しさん
20/09/20 20:06:08.38 XyOg3AIQ.net
>>399
いやもう
\b(?!set|get)\w+\(\)
でいいんでしょ

418:デフォルトの名無しさん
20/09/20 23:02:18.72 ylbIOeZ5.net
JavaScript では、これで複数行マッチ(g)できた
/<a[^>]+>.*言語.*<\/a>/g
<a で始まって、> 以外の文字が、1文字以上続いて、>
言語の前後に、.*
<\/a> で終わる
他には、Ruby でスクレイピングすれば?

419:デフォルトの名無しさん
20/09/21 00:25:21.75 18fwmJUF.net
>>402
おかしいな、それでうまくいかなかったのに
と思ったら入ってくるHTMLソースに改行がないようだ
</a>のあとに改行入れるとうまくいくように見えるけど、HTMLソースがおかしくなる
正規表現以前の問題だったわ

420:デフォルトの名無しさん
20/09/21 02:04:42.18 h9hvsVjr9
ダイドーグループ、「副業・副業受け入れ制度」を導入
URLリンク(ascii.jp)
コロナで「需要が高まった副業スキル・講座」10選。ただ話を聞くだけでもOK
URLリンク(news.yahoo.co.jp)
副業ニーズが急速に上昇、副業を認める企業に対して高い好感度。課題は「情報の提供方法」
URLリンク(webtan.impress.co.jp)
老舗の製薬会社が頼った、月10万円で雇える“オンライン副業人材”
URLリンク(news.yahoo.co.jp)
ジョブ型への移行、オフィス半減 富士通・平松常務に聞く「真のDX企業へと脱皮する要点」
東�


421:條C上、社内副業を解禁 ITとの協業など企画・立案https://www.nikkei.com/article/DGXMZO63623910Z00C20A9EE9000/ジョブ型、在宅、単身赴任解消、副業受け入れ……経営判断の舞台裏https://business.nikkei.com/atcl/NBD/19/special/00592/年商5000万円のYouTuber・イケダハヤトさんに聞く!YouTuberを副業にしたいと考える人に伝えたい「世界を楽しむ」心構えhttps://ddnavi.com/interview/673913/a/スポーツ界とビジネス界のマッチング 副業・兼業人材のスキルを生かすhttps://project.nikkeibp.co.jp/mirakoto/atcl/sports/h_vol16/フリーランス向け報酬即日払いサービス『先払い』 受付開始から12ヶ月で申込件数2,500件突破https://prtimes.jp/main/html/rd/p/000000040.000047439.html



422:400
20/09/21 02:18:58.27 +seX53Ud.net
別に抜き出すだけなら、
一旦、</a> の後ろに、改行を追加してから、正規表現を使えば?
それか、HTML をコピーしてから、やるとか

423:デフォルトの名無しさん
20/09/21 04:00:13.04 fovUI165.net
"/(<a(?>[^>]+)>(?>[^<]*?言語[^<]*)<\/a>)(?:<a(?![^<]*言語)(?>[^<]+)<\/a>)*/$1/g"

424:デフォルトの名無しさん
20/09/21 04:10:48.96 fovUI165.net
"/<a(?![^<]*言語)(?>[^<]+)<\/a>//g"

425:400
20/09/21 05:27:30.09 +seX53Ud.net
Ruby, Nokogiri で、スクレイピングしたら、
require 'open-uri'
require 'nokogiri'
# プログラム技術@スレッド一覧
url = "URLリンク(mevius.5ch.net)
doc = Nokogiri::HTML( open( url ) )
# 「言語」という単語が含まれる、タイトルを表示する
ary = doc.css( "#trad > a" ).map { |elem| elem.content }
.select { |title| title.include? "言語" }
puts ary
出力
6: 次世代言語21 Go Nim Rust Swift Kotlin TypeScript (330)
10: 日本語プログラミング言語『なでしこ』スレ6.1c2ch.net (108)
以下略

426:デフォルトの名無しさん
20/09/21 15:36:21.19 K0hBqhJG.net
冗談抜きでそんな無駄な努力するよりxpathとかそっち系おすすめするぞ

427:デフォルトの名無しさん
20/09/21 16:25:39.02 +MA8+KhA.net
単純なスクレイピングはcurl+pupが楽
$ curl -s URLリンク(mevius.5ch.net) | pup '#trad > a' text{} | grep 言語 | head -5

428:400
20/09/21 22:36:13.18 +seX53Ud.net
>>408
のopen-uri を、下のように、外部コマンドのcurl にも出来るけど、
普通は、わざわざ外部コマンドを呼ばない
url = "http~"
doc = Nokogiri::HTML( open( url ) )
html = `curl http~`
doc = Nokogiri::HTML( html )

429:デフォルトの名無しさん
20/09/22 15:43:36.39 fUgbeHE5.net
●Regular Expressionの使用環境
サクラエディタ
●検索か置換か?
置換
●説明
httpを含まない行の/を年に置き換えたい
●対象データ
URLリンク(5ch.net)
2020/9
●希望する結果
URLリンク(5ch.net)
2020年9

430:デフォルトの名無しさん
20/09/22 16:23:41.31 hefdb5Yb.net
こんなもんでもよろしいでしょうか。
あんまりうまくないと思いますが。
よろしくお願いいたします。
置換前
^(?!http)([0-9]{4})(/)
置換後
$1年

431:デフォルトの名無しさん
20/09/22 16:33:21.65 fUgbeHE5.net
>>413
ありがとうございます。うまくいきました。

432:デフォルトの名無しさん
20/09/23 20:03:55.75 itvZvUM6.net
>>406
>>407
なんかすげえな
>>405,408-411
いろいろやり方あるんだね、サンクス

433:デフォルトの名無しさん
20/09/25 14:10:58.84 3NF+8528.net
●Regular Expressionの使用環境
Linux
awkとか、sed。
目的が置換なので、コマンドはなんでも構いません。
●検索か置換か?
置換
●説明
= 任意の文字列 :
を置き換えたい
※前後に半角スペースあり。
●対象データ
hogeghoe = type: furagura
mogemoge = syntax: mojamoja
●希望する結果
hogeghoe type: furagura
mogemoge syntax: mojamoja
※スペースで置き換えた例

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

434:デフォルトの名無しさん
20/09/25 14:14:55.55 3NF+8528.net
>>416
取り消します。精査する前に書き込んでおり
間違いがございました。すいません。

●Regular Expressionの使用環境
Linux
awkとか、sed。
目的が置換なので、コマンドはなんでも構いません。
●検索か置換か?
置換
●説明
= 任意の文字列 :
を置き換えたい
※前後に半角スペースあり。
●対象データ
hogeghoe = type: fuga:fuga
mogemoge = syntax: moja:moja
※置換目的のコロンの後ろにさらにコロンがある場合があります。
 =から「次の最初のコロン」までが置換対象です。
●希望する結果
hogeghoe fuga:fuga
mogemoge moja:moja
※スペースで置き換えた例
よろしくお願いいたします。

435:デフォルトの名無しさん
20/09/25 14:24:47.87 q10QaMUD.net
>>417
sed 's/ =[^:]*://g'

436:デフォルトの名無しさん
20/09/25 16:57:28.24 3NF+8528.net
>>418
ありがとうございます。理解を超えた書き方なので
そのまま利用いたします・・・

437:デフォルトの名無しさん
20/09/25 21:14:34.14 9rvIESf7.net
>>419
そんなに難解ではないぞ
: でない文字が0個以上続いて
その後に一文字だけ : があるパターンを
すべてスペースに書き換えるというだけの意味

438:デフォルトの名無しさん
20/09/25 22:49:57.38 rXEBHfdh.net
●使用環境:RegEx Lab(iOSアプリ,ICU Regex)
●検索か置換か?:検索
●説明:時間毎の内容を取り出したいです。自分でも考えてみたのですが、(?m)(?<=\d{1,2}:\d{2}\r)([\s\S]*?)\r ではAt~Mediaまで取得できませんでした。
補足として、各内容の前後には必ず時間と空白行が挿入されています。ただし、テキストにも空白行が挿入されている場合があります。ちなみに日付毎にファイルが分かれているため、対象データ最上部の日付が途中に挿入されることはありません。
●対象データ
25 September 2020
=================
8:05
テキスト1
10:44
テキスト2
At: スポット名: 位置情報・座標
Tags: タグ1, タグ2
Media: 123abcdefg.jpg
Media: hijklmn456.png
●希望する結果
○マッチ1
テキスト1
○マッチ2
テキスト2
At: スポット名: 位置情報・座標
Tags: タグ1, タグ2
Media: 123abcdefg.jpg
Media: hijklmn456.png

439:デフォルトの名無しさん
20/09/26 02:18:28.42 Xs9MiFl7.net
とりあえず鬼雲なら
\d\d?:\d\d\n(([^\n]+\n)+)
で\1なり$1なりで取り出せるけど
どー使うのかしらねーけど改行に続く時刻消せばいいんじゃねw

440:デフォルトの名無しさん
20/09/26 07:24:38.50 QW/S7GaB.net
\d\d?:\d\d\n\K((.(?!^\d\d?:\d\d))+\n)+
マッチに時間の直前の空行まで含めるのか?含まないのか?
テキスト終端(例だとテキスト1\n 456.png\n)の改行文字を含めるのか?含まないのか?
マッチがどこまでなのか曖昧
2段階になるけど一旦時刻をテキスト中に現れない文字に置換すれば簡単に出来る
^\d\d?:\d\d → ★
[^★]+
時刻の直前の空行を含まないのなら
\n\d\d?:\d\d → ★
テキスト終端の改行を(ry
\n\n\d\d?:\d\d → ★

441:デフォルトの名無しさん
20/09/26 19:21:20.61 aEJhlUXF.net
>>422
>>423
ありがとうございます!
試してみたところ、Meryでは問題なく動作しているようでしたがRegEx Labでは動作しませんでした…
> 時間の直前の空行
>テキスト終端(例だとテキスト1\n 456.png\n)の改行文字
どちらも含めずに取得したいです。

442:デフォルトの名無しさん
20/09/26 19:40:36.95 5brst4gY.net
(?m)(?<=^\d{1,2}:\d{2}(?:\r\n|(?<!\r)\n|\r(?!\n)))^[\s\S]*?(?=(?:\r\n|(?<!\r)\n|\r(?!\n))+\d{1,2}:\d{2}(?:\r\n|(?<!\r)\n|\r(?!\n))|(?:\r\n|(?<!\r)\n|\r(?!\n))*\z)

443:デフォルトの名無しさん
20/09/26 20:25:49.24 W0BkzYxL.net
こういう長い正規表現てやっぱ遅くなったりするの?

444:デフォルトの名無しさん
20/09/26 20:47:28.01 5brst4gY.net
これでよかったっぽい
(?m)(?<=^\d{1,2}:\d{2}(?:\r?\n|\r))^[\s\S]*?(?=(?:\r?\n|\r)+\d{1,2}:\d{2}(?:\r?\n|\r)|(?:\r?\n|\r)*\z)

445:デフォルトの名無しさん
20/09/26 20:48:16.86 5brst4gY.net



446:>>426 どうだろうね、基本的な構造は>>421と同じだけど データの改行コードがどうなっているのか謎だったのでとりあえず全種類対応しようと欲張ったらこんなことに \n に置き換えるとこう (?m)(?<=^\d{1,2}:\d{2}\n)^[\s\S]*?(?=\n+\d{1,2}:\d{2}\n|\n*\z)



447:デフォルトの名無しさん
20/09/26 20:52:05.12 yw3DqGjj.net
長い短いではなく、試行回数が多い記述(行ったり戻ったり何度もやり直すもの)が遅い
そういうのは逆に記述を詳しくしたりして長くするほうが速い

448:デフォルトの名無しさん
20/09/26 21:02:00.75 aEJhlUXF.net
>>427
問題なく動作しました、ありがとうございます!
本当に助かりました!

449:デフォルトの名無しさん
20/09/26 21:08:10.61 GBugeZhr.net
>>419
正規表現のデフォルトは、貪欲・greedy・最長一致だから、
非貪欲・reluctant・最短一致にしたい場合に使う。? と同じ
[^x]*、x以外の文字を、0個以上
[^x]+、x以外の文字を、1個以上
Ruby では、
src = "12x34x56"
p src[ /.*x/ ] #=> 12x34x
p src[ /.*?x/ ] #=> 12x
p src[ /[^x]*x/ ] #=> 12x

450:デフォルトの名無しさん
20/09/26 21:51:29.79 awo63W4n.net
>>429
行ったり戻ったりはないんじゃない?

451:デフォルトの名無しさん
20/09/26 22:57:54.77 U+G6yEte.net
>>432
バックトラックの事でしょ
URLリンク(qiita.com)

452:デフォルトの名無しさん
20/09/27 04:53:12.79 ICi3HfJX.net
\d{1,2}なら\d\d?
\d{2}なら\d\d
の方が短く済むから2桁以下なら無駄

453:デフォルトの名無しさん
20/09/27 05:56:53.69 nMBRMM6J.net
それは見易さと短さのどちらを優先するかによる
短いだけが正義では無い
2つ程度で見易いもクソも…と思うかも知れないが慣れない者にとっては数字の方が見易いらしい
俺は断然\d\d?派だが
でもこれは(?:\r?\n|\r)→(?:\r\n?|\n)
同じ意味だが
\r
\r\n
 \n
をどう表すか?ってことだから後者のように前方を固定した方が分かり易いと思う
RtoLが関係してたりするのだろうか?

454:デフォルトの名無しさん
20/09/27 06:00:47.57 Y+KxHJb0.net
今どき\rだけとか見ないし\r?\nで良くね? 駄目?

455:デフォルトの名無しさん
20/09/27 20:03:40.48 +P5c8fwT.net
●Regular Expressionの使用環境
c# .net Framework 4.8
●検索か置換か?
検索
●説明
「,」区切りの2桁の文字列を全て取得したい(Split関数でなく)。

●対象データ
04,05,28
●希望する結果
04
05
28
●補足
現在使っている正規表現は右です (\d{2})(?:,(\d{2}))*
これを使うと、対象となる2桁の数字のうち、最初と最後のものしか取得できません
対象データが4個以上でも同様です

456:411
20/09/27 20:26:03.04 qo22866j.net
以前 >>412 で質問し解答を頂いた者です。
内容は同じなんですが、この置換を他のパターンでも応用したく再度質問致します。
●Regular Expressionの使用環境
サクラエディタ
●検索か置換か?
置換
●説明
◆を含まない行の▲を■に置き換えたい
◆▲■は任意の文字列で、文字数も決まっていません。
●対象データ
Sst68▲h4◆
DRkPP2▲V
NN▲◆9K12XV▲
G▲RL88▲A7
●希望する結果
Sst68▲h4◆
DRkPP2■V
NN▲◆9K12XV▲
G■RL88■A7
どうぞよろしくお願いいたします。

457:デフォルトの名無しさん
20/09/27 21:00:31.89 7/tRzxCb.net
>>433
極端な例だろうけど4倍も差が出るのか

458:デフォルトの名無しさん
20/09/27 21:15:26.41 5NvF/cEJ.net
>>437
(¥d{2}),?

459:デフォルトの名無しさん
20/09/27 22:52:42.77 +P5c8fwT.net
>>


460:440 返信ありがと だけど上手く取得できないです 対象データが 04,05,28 のときにマッチしたグループを全部出力すると 04, 04 となります



461:デフォルトの名無しさん
20/09/27 23:09:03.39 5NvF/cEJ.net
>>441
MatchじゃなくてMatches使ってね
よく考えたら単に¥d{2}でもよくない?

462:デフォルトの名無しさん
20/09/27 23:09:42.50 PP0FbEmI.net
>>439
ちっとも極端じゃないよ
対象テキストが長くて酷いと数sと数msとか何千倍、何万倍も差がつく
もっと極端なことにもなって、だんまり(終わらない)状態になることもある

463:デフォルトの名無しさん
20/09/27 23:11:27.15 PP0FbEmI.net
あ、そのリンク先の表現でのことじゃなく一般的な話としてのことなので、念のため

464:デフォルトの名無しさん
20/09/27 23:23:38.28 +P5c8fwT.net
>>442
おかげさまで出来ました。ありがとうございます

465:デフォルトの名無しさん
20/09/28 00:15:40.71 KUcib4mR.net
数年前に某技術系Q&Aサイト全体が30分以上応答不能になったことがあったけど、アレもbacktrack絡みの正規表現処理(に高負荷をもたらす投稿)がトリガーだったはず

466:デフォルトの名無しさん
20/09/28 00:39:03.54 HqyKtYng.net
Jane系のNGEx,ReplaceStr.txtの正規表現で酷いものが投稿されることがある
よく吟味しないと
対象スレ(ちょっと長いスレとか)によってはだんまりとか発生する

467:デフォルトの名無しさん
20/09/28 05:18:56.57 QIpyCS2B.net
>>438
一旦、grep で、◆ を含まない行だけを抽出してから、処理すれば?
grep -v "◆" ファイル名

468:デフォルトの名無しさん
20/09/28 05:43:11.14 9VrOlQkL.net
バックトラックは対象が簡単に一致するものしか無いのであればそれほど気を使わなくても良いが
一致しないものがある場合 一致しない に至るまでに全パターンを試すから
その挙動を必要最小限に抑えたものとそうでないものとでの試行数は桁違い
対象が長くなれば数倍どころでは済まない
大抵の場合、人が確認する際のロジックを再現するのが1番効率が良い
NGEx.txtを晒すスレ7
URLリンク(jane2ch.net)
(<br>.*){20}             49194006ms  激重
^(.*?<br>){20}            *1570733ms
^(?:(?:(?!<br>).)*<br>){20}     ****2202ms  軽い
^(?>.*?<br>){20}           ****1784ms  もっと軽い

469:435
20/09/28 15:22:21.72 R3xf3P8N.net
>>448
単なるテキストならいいのですが、用途としては
リネーマーソフトReNamerやAdvanced Renamerなどで
バッチ処理にも使いたいので。

470:デフォルトの名無しさん
20/09/28 18:16:12.67 RQEq0dPl.net
>>438
(?:^(?!.*◆)|\G(?!\A))(.*?)▲ → $1■

471:デフォルトの名無しさん
20/09/28 18:54:06.13 R3xf3P8N.net
>>451
出来ました!素晴らしいです!マジ感謝です!ありがとうございました。

472:デフォルトの名無しさん
20/10/21 20:12:01.53 nvjx5i9I.net
一文字だけで改行するのを
NGにするには
どうしたらいい?

473:デフォルトの名無しさん
20/10/21 20:18:35.54 +qN3TxkM.net
>>453
テンプレを読んで出直しましょう

474:デフォルトの名無しさん
20/11/06 11:29:16.13 xeNq05z2.net
oniguruma6.9.6 Windows10のVS2019で64bit版だとtestc.exeが無言で終了する、32bitだと正常。
Winodws7でVS2015U3だと64bitでも32bitでも正常に動作する。
これ、以前からWindows64bitが鬼門だなあ

475:デフォルトの名無しさん
20/11/10 19:15:09.53 aUuUQimA.net
●PowerShell
●置換
●テキストファイル内の「WrtCookie=」で始まる行の値を「WrtCookie=」に置換する
●「WrtCookie=」で始まる行
現在のコマンド
$input = '^(WrtCookie=).+$'
$replacement = '$1'
$file_contents = $(Get-Content $filepath) -replace $input, $replacement
結果
テキストファイル内の全行が出鱈目な文字列に置換されます
たとえば「$1[$1W$1I$1N$1D$1O$1W$1]$1」など
よろしくお願いします

476:デフォルトの名無しさん
20/11/10 21:00:25.97 UHXHz0W1.net
URLリンク(www.google.co.jp)

477:デフォルトの名無しさん
20/11/11 00:09:52.12 tbqNNnPd.net
>>457
書き込む前にたくさんググりましたが、ダメでした

478:
20/11/11 01:27:50.51 zRgJ3mqg.net
>>456
変数名 input を regexp とかに変えれば上手くいくはず
input は「自動変数」として設定済
URLリンク(docs.microsoft.com)

479:デフォルトの名無しさん
20/11/11 02:35:05.41 wa6LgG/F.net
>>456
俺のところじゃ、そのままでも正常だけどなあ(win7だからか? PS ver.5.1)
その3行だけじゃあ表示も出力もされないので
$file_contents
を最後に追加した
その入力ってJane系のiniファイル(SJIS)だよね?
ファイルに出力もして確認してみた
(デフォではUnicode16になっちゃうのでout-fileでencoding指定)

480:デフォルトの名無しさん
20/11/11 05:21:46.13 yU9bVv8n.net
Windows 10、PSVersion 5.1 では、
input という名前が、ダメ!

481:デフォルトの名無しさん
20/11/11 19:56:31.19 tbqNNnPd.net
>>459-461
おっしゃる通りに変数inputの名前を別の変数名にしたら出来ました
inputは予約語みたいなものだったのね
ありがとう

482:デフォルトの名無しさん
20/11/11 22:49:04.53 yU9bVv8n.net
VSCode を使っていれば、白色になる・注意されるから、おかしいとすぐに分かる
まあ、echo などのエイリアスも、白くなるけど

483:デフォルトの名無しさん
20/12/12 00:58:58.79 c3naq2mv.net
質問
abc

a,b,c
に一発で変換する正規表現を教えてください!

484:デフォルトの名無しさん
20/12/12 07:54:00.68 hjoAkuIf.net
(?!^|$) → ,

485:デフォルトの名無しさん
20/12/12 09:13:39.74 weC8GZqi.net
461じゃないけど、知らなかった。
 行頭じゃない&行末じゃない
だけ言えば字間全てに入れてくれるんだ。

486:デフォルトの名無しさん
20/12/12 09:45:07.71 DbQnMcwq.net
s//,/g
だと、,a,b,c,になる

487:デフォルトの名無しさん
20/12/12 10:10:46.24 c3naq2mv.net
>>465
ありがとうございます!

488:デフォルトの名無しさん
20/12/15 08:04:57.95 RAwP5vtJ.net
●Regular Expressionの使用環境
Perl5
●検索か置換か?
検索
●説明
文字列中のX,YY,ZZZのどれかが最初にあるまでのX,YY,ZZZを含む抽出
●対象データ
ABXCDXEFYYGH
ABYCZZZDXEFYYGH
ABCDXXGHZZ
●希望する結果
ABX
ABYCZZZ
ABCDX
お願いします

489:デフォルトの名無しさん
20/12/15 08:15:41.96 M4wr588R.net
>>469
($out) = ($in =~ /(.*?(?:X|YY|ZZZ))/)

490:デフォルトの名無しさん
20/12/15 08:17:29.03 cXhQAKUm.net
>>469
試してないけど、
\A.*?(X|YY|ZZZ)(?=(X|YY|ZZZ))

491:デフォルトの名無しさん
20/12/15 08:49:36.46 RAwP5vtJ.net
>>470-471
ありがとうございます。
最初のでできました。

492:デフォルトの名無しさん
20/12/19 09:53:24.06 YTpQ8Jg0.net
ublacklistでPinter


493:estをブロックする正規表現教えて下さい



494:デフォルトの名無しさん
21/01/11 15:03:41.29 A5mldiyH.net
行末以外の改行を任意の一文字(今回はアットマーク)に置換したいのですが可能でしょうか?
改行コードは、crもlfもcrlfも混じってるものとしてお願いしたいです。

495:デフォルトの名無しさん
21/01/11 15:10:21.63 WVZOdukT.net
>>474
行末の改行と行末でない改行を区別する方法がわからぬ
CSVみたいな感じ?

496:デフォルトの名無しさん
21/01/11 15:31:25.19 zqhSwaSS.net
初学者なのでうまく伝わるか心配ですが、 固定長で末尾に改行が入っているレコードファイルを扱っています
その中で、末尾だけでなくレコード中にも改行コードが含まれるようなデータがあり、それを置換したいといった具合です。
UNIX上での話なので、Perlやsedで置換できればと思います。
よろしくお願いいたします。

497:デフォルトの名無しさん
21/01/11 15:41:19.51 8i1ZTkbL.net
sedはデフォルト行ベースなので改行コードを全部置換すればいい

498:デフォルトの名無しさん
21/01/11 15:43:13.55 92N2rfT4.net
/[\r\n]++(?!$)/@/g
こんな感じじゃね?分からんけど

499:デフォルトの名無しさん
21/01/11 16:15:14.39 rLqIFFRR.net
s/\r?\n/@/gm;
どうよ?

500:デフォルトの名無しさん
21/01/11 16:20:44.13 A2M5zvGV.net
固定長ごとに出てくる改行以外の改行ってことじゃね
改行含めて80文字固定長なら80文字目や160文字目以外の37文字目や53文字目に出てくる改行

501:デフォルトの名無しさん
21/01/11 17:26:33.52 8i1ZTkbL.net
あーすまんそういうことか
それだと固定長単位に読み取って置換と出力のループかな
while read -N10 line || [ "$line" ]; do
echo "$line" | tr -d '¥r¥n'
echo
done < input.txt

502:デフォルトの名無しさん
21/01/11 17:59:11.32 Op1S7Ai1.net
やりたいことは、 >>480 さんの仰る通りです。
少ない情報の中、皆さん色々とありがとうございます。
明日以降試してみます、本当にありがとうございます。

503:デフォルトの名無しさん
21/01/11 18:31:58.04 RwOnRvzI.net
改行コードは、cr・lf・crlf の3種類あるのか?
固定長の末尾の改行の後には、何が入っている?
ヌル文字か?
例えば、100バイトの固定長で、内容が80バイトなら、
残りの20バイトには、何が入っている?
それとも、内容の80バイトの部分だけが、渡ってくるのか?

504:デフォルトの名無しさん
21/01/11 18:43:53.19 5PaUweSP.net
CR なんとかReturn
LF LineFeed
CRLF なんとかReturnLineFeed

505:デフォルトの名無しさん
21/01/11 20:39:57.39 F0XanEVZ.net
echo -en "abcde
a\ncde
a\rcde
a\r\nde
abcdef
a\ncdef
a\nc" |
sed -re ':b;y/\r\n/@@/;/.{5}/!{N;bb};'

506:デフォルトの名無しさん
21/01/11 21:38:18.11 6WXFekQD.net
>>474
CRLFは@2個に置換でいいんだよね?
CRLFを@1個に置換したら固定長ファイルとして
ファイル構造がおかしくなるわけだし

507:デフォルトの名無しさん
21/01/12 17:48:10.93 fqpU06Zc.net
>>484 carriage

508:デフォルトの名無しさん
21/01/14 20:15:05.94 uu7IOQ/X.net
>>482
解決しましたか?

509:デフォルトの名無しさん
21/01/14 20:19:20.00 eDcISF88.net
うざw

510:デフォルトの名無しさん
21/01/15 04:04:23.16 VxNLJyBo.net
先日質問させていただいた471です。
色々と試した結果、
perl -pe ‘s/¥r/@/g $INFILE | perl -pe ‘s/¥n/@/g > $TMPFILE
cat $TMPFILE | perl -e ‘while(read(STDIN, $tmp , 100)){print $tmp, “¥n”}’ > $OUTFILE
と言った具合に、改行を消してから固定長に区切って再度改行付与という形でうまくいきました!
皆さんに教えてもらった方法とは少し異なりますが、ここで質問し


511:なければ検索ワードすら導き出せませんでした。 皆様には感謝してもしきれません。 ありがとうございました。



512:デフォルトの名無しさん
21/01/26 15:31:24.90 7DQrPYu1x
「フリーランススタート」の掲載案件数、累計16万件を突破
URLリンク(codezine.jp)
「週3日・社員の6割以上」テレワーク、東京都が要請 ホテルをオフィス代わりに使うと、1カ月100万円補助
URLリンク(www.itmedia.co.jp)
札幌市のテレワーク導入支援制度 想定上回る申請600件 追加で受け付け中
URLリンク(www.hokkaido-np.co.jp)
最大45万円を支給!ギフトモール、本社移転および従業員のリモート環境整備を徹底サポート
URLリンク(www.jiji.com)
週半分以上の在宅勤務も可能!大日本印刷が人事制度刷新へ
URLリンク(newswitch.jp)
中小企業がテレワーク導入のために利用できる助成金や補助金の制度があるって知ってた?
URLリンク(dime.jp)
テレワーク支援が手厚い会社 vs 全部自腹会社の差がスゴすぎる
URLリンク(news.livedoor.com)
【フリーランス・副業の実態調査】転職活動中ではない専業フリーランス、
副業ワーカーの4割以上が、副業を通して転職を検討すると回答
URLリンク(prtimes.jp)

513:デフォルトの名無しさん
21/02/02 23:52:09.94 LuWw9dWt.net
[]で囲まれた単語は/\[.+\]+/gで見つかるけど
文中に複数[]で囲まれた範囲があるとうまくいかない
'['以降で一番近い']'にマッチさせたいんだがどうやるか教えて

514:デフォルトの名無しさん
21/02/03 00:24:53.98 SY/XoUH2.net
/\[[^\]]+\]+/g

515:デフォルトの名無しさん
21/02/03 01:04:29.59 UENZ/29T.net
>>493
ありがとう!

516:デフォルトの名無しさん
21/02/03 18:02:08.71 CJ1qfEuB.net
英数字7桁[0-9a-zA-Z]の文字列から(改行を経て)先程とは異なる英数字7桁の文字列まで最短一致させる正規表現を書きたいのですがわかりません…
一つ目の7桁の英数字は変数fistに入ってます
new Reg(first +"(.*\n)*?"+ここから先がわかりません
どなたかよろしくお願いしますm(_ _)m

517:デフォルトの名無しさん
21/02/03 18:33:27.05 sadlF3mb.net
最短一致ということは行当たりが[0-9a-zA-Z]{7}ではなく別の文字列も含んでいそうな
つまり「0123abc\ndef4567」だけではなく「あいう0123abc\ndef4567かきく」もあるとか
見本出した方がいいのではないかな

518:デフォルトの名無しさん
21/02/03 18:41:43.46 q3Uucr84.net
とりあえずこんな感じであとは調整して
URLリンク(regex101.com)

519:デフォルトの名無しさん
21/02/03 19:08:15.83 CJ1qfEuB.net
>>496
すいません、簡単にするために設定をちょっと変えさせてください。
[0-9A-Z]
大雑把で大丈夫なんですが
あいうえお01ABC23あいうえお01abc23あいうえお01abc23  ←ここの01ABC23から
あいうえお01abc23あいうえお01


520:ABC23あいうえお01abc23 あいうえお01abc23あいうえお01ABC23あいうえお01abc23 あいうえお01abc23あいうえお01DEF23あいうえお01abc23  ←ここの01DEF23まで切り抜きたい あいうえお01abc23あいうえお01ABC23あいうえお01abc23 あいうえお01abc23あいうえお01HIJ23あいうえお01abc23 first = "01ABC23" が入ってるので、正規表現の最後を01DEF23にしたいのですが [0-9A-Z]{7}から"01ABC23"だけを除外する方法がわからず困ってます。



521:デフォルトの名無しさん
21/02/03 19:12:17.69 CJ1qfEuB.net
>>498
訂正 「大文字と数字だけの7桁に設定変更させてください」って文言が抜けてました
>>497
すいません、その後の調整方法がわからないんです...

522:デフォルトの名無しさん
21/02/03 19:16:51.84 CJ1qfEuB.net
日本語がおかしくなってました
01ABC23~01DEF23と切り抜きたいのですが、
first = "01ABC23"と入っているので、firstという変数を使いつつ[0-9A-Z]{7}から"01ABC23"だけを除外する方法がわからず困ってます。

523:デフォルトの名無しさん
21/02/03 19:28:51.74 oLpXy7xv.net
>>500
"(?!" + first + ")[0-9A-Z]{7}"

524:デフォルトの名無しさん
21/02/03 19:41:14.94 CJ1qfEuB.net
>>501
ありがとうございますm(_ _)m
↓だと最短一致しないのですが、真ん中がおかしいのでしょうか?
let reg = new RegExp(first+"(.*\n)*?"+"(?!"+first+")[0-9A-Z]{7}");

改行を含めた最短一致は([\s\S]*?)か(.*\n)*?でできていたのですが、何故か最短にならず困ってます

525:デフォルトの名無しさん
21/02/03 19:49:30.28 CJ1qfEuB.net
>>502
真ん中とは+で繋げた"(.*\n)*?"の部分のことです
日本語すら怪しくてすみません

526:デフォルトの名無しさん
21/02/03 20:21:28.10 CJ1qfEuB.net
>>502
自己解決しました
スレ汚しすみませんでした
答えてくださった方々ありがとうございました

527:デフォルトの名無しさん
21/02/04 12:49:19.54 ynIf2rIG.net
[正規表現の[表現力[は]ネストに]勝てない]
※Perlの拡張とかは除く

528:デフォルトの名無しさん
21/02/04 15:31:37.02 7s9fZWEo.net
繰り返しの中で使う時、時間のかかる正規表現を避けたいが、結局試すのが一番
if x=="abc" と if x=~/^abc$/ の比較など(簡単すぎる例)
重要なシステム内で複雑な表現を使う場合テストも重要だが、
どうしてもおかしくなったら調べる式になってしまう

529:デフォルトの名無しさん
21/02/06 14:47:08.00 s4jA/y9i.net
お願いします
●Regular Expressionの使用環境
VBScript
●検索か置換か?
置換
●説明
[hoge]をブラケットごと消したい
[[hoge]]の場合は残したい
●対象データ
abc[hoge]def
ghi[[hoge]]jkl
●希望する結果
abcdef
ghi[[hoge]]jkl
^^^^^^^
否定戻り読み否定先読みで試してみたのですが、ブラケット2回の場合にマッチせずブラケット1回の場合にのみマッチさせる方法が分かりませんでした
よろしくお願いします

530:デフォルトの名無しさん
21/02/06 15:07:35.62 bKRJeVsu.net
(?<!\[)\[hoge\](?!\])

531:デフォルトの名無しさん
21/02/06 16:56:52.18 EC31O1b+.net
>>507
VBSには否定戻り読みは無いので、工夫するしかない
すぐには思いつかないけどもっといい方法もあるかもしれないのでググってみては?
愚直には、一つの方法として以下の場合に分ける
1) [hoge]で始まる場合
2) 文字列があって [ 以外で終わって [hoge] がある場合
3) 文字列があって [ で終わってる場合、[hoge] があって ] が続かないこと
pattern : "^(?:\[hoge]|(.*?\[)\[hoge\](?!\])|(.*?[^\[])\[hoge\])(.*)$"
replace : "$1$2$3"
abcdef → abcdef
[hoge]def → def
[[abc]]def → [[hoge]]def
abc[hoge]def → abcdef
abc[[hoge]]def → abc[[hoge]]def
abc[[hoge]def → abc[def
abc[hoge]]def → abc]def
下2つの場合が無ければもう少し簡易にできる
では[hoge]が2つ以上ある場合はどうするか?
すぐ思いつく方法としては、変換をループさせて、文字列に変化がなければ終わりとか

532:デフォルトの名無しさん
21/02/06 17:17:15.94 do+3t/u8.net
(¥[hoge¥])(?!¥])|[^¥[](¥[hoge¥])
URLリンク(regex101.com)

533:デフォルトの名無しさん
21/02/06 17:31:09.15 nqcg0owg.net
(\[\[hoge\]\])|\[hoge\] → $1
URLリンク(regex101.com)

534:デフォルトの名無しさん
21/02/06 17:40:46.95 bKRJeVsu.net
([^\[])\[hoge\]([^\]])
$1$2
(^|[^\[])\[hoge\]([^\]]|$)
$1$2

535:デフォルトの名無しさん
21/02/06 17:4


536:4:51.10 ID:s4jA/y9i.net



537:デフォルトの名無しさん
21/02/06 18:09:33.55 EC31O1b+.net
>>511
すばらしいです
>>510,>>512
残念

538:デフォルトの名無しさん
21/02/06 18:21:12.27 z9sN/DQY.net
発想の転換だな
目鱗

539:デフォルトの名無しさん
21/02/06 18:57:27.44 do+3t/u8.net
>>511
へぇー、これは面白い

540:デフォルトの名無しさん
21/02/06 19:33:52.91 nvvrKfMw.net
>>511
これは賢い

541:デフォルトの名無しさん
21/02/16 18:09:22.76 YYQsROlp.net
※間はタブです
●Regular Expressionの使用環境
サクラエディタ
●検索か置換か?
置き換え
●説明
(ABC|JKLHI7)を反転させたい
※(ABC|JKLHI7)→空に置き換え
ABC    DEF     123
FGH    JKL     956
GBN    MJK    HI7
↓こうなります
    DEF     123
FGH         956
GBN    MJK
(ABC|JKLHI7)を反転させて
ABC    
    JKL     
        HI7
というデータに置き換えたいです。
よろしくお願いいたします。

    

542:デフォルトの名無しさん
21/02/16 18:10:03.36 YYQsROlp.net
>>518
説明の部分に誤りがありました。
●説明
(ABC|JKLHI7)を反転させたい
でなく
(ABC|JKL|HI7)を反転させたい
でした。

543:デフォルトの名無しさん
21/02/16 18:30:01.16 9J2HaZUU.net
区切りは全角空白なのかい?
まあこんなのでどう?
(ABC|JKL|HI7)|[0-9A-Z]*→$1

544:デフォルトの名無しさん
21/02/16 19:29:55.89 YYQsROlp.net
>>520
ありがとうございます。
その発想まったくありませんでした。
ほしいものカッコで包んで|要らないもので置き換え
御見それしました。
ありがとうございます。

545:デフォルトの名無しさん
21/02/16 20:11:15.08 2Q6k9WLx.net
>>520
>>511再び
再度>>515感想

546:デフォルトの名無しさん
21/02/17 00:48:24.95 5uVmT0ro.net
XABCXのようなものまでABCにしたいなら、末尾を+?に変えた方がいいかも

547:デフォルトの名無しさん
21/02/17 22:00:48.93 yF2gYpL6/
「コンサル・IT業界」を俺が全解説する やりたい事ない就活生は全員集合!
URLリンク(www.youtube.com)
努力不足でSESに転職
URLリンク(www.youtube.com)
【転職】日系大手企業から外資系企業への転職は困難な道だ
URLリンク(www.youtube.com)
【就活】非体育会系はどう戦うべきなのか?
URLリンク(www.youtube.com)
「圧倒的努力」と言いたがる奴www
URLリンク(www.youtube.com)

548:デフォルトの名無しさん
21/02/18 23:51:52.71 sRdwF113.net
面白いなあ
逆に正規言語じゃない言語ってどんなのか気になる

549:デフォルトの名無しさん
21/02/19 07:25:19.97 1ojHRCGQ.net
言語?

550:デフォルトの名無しさん
21/02/19 18:55:29.37 Clj7wgUu.net
文脈自由言語とか文脈依存言語とか?

551:デフォルトの名無しさん
21/02/19 20:03:11.77 gWMDVcMR.net
文脈も先読み後読みrematch駆使すれば取れそうに思うけど、本来どこまでやっていいんだっけ 理論とか分からん

552:デフォルトの名無しさん
21/02/19 20:05:33.21 Wnqd+KEH.net
正規表現で記述可能な文字列の集合を指して正規言語という
が、その意味で使われたのかは定かでない

553:デフォルトの名無しさん
21/02/19 20:15:12.89 gWMDVcMR.net
取り敢えずその言語がn要素の有限集合ならstr1|str2|...|strn で表現できるのでは
文字列の長さを制限して、有限の文字集合なら
すげーつまらないけど

554:デフォルトの名無しさん
21/02/19 20:33:20.22 gWMDVcMR.net
無作為な文字列から、特定の言語に属する部分列を検出しろ、って問題にどれだけ簡潔に答えられるかってことだよな
どう計ったものか

555:デフォルトの名無しさん
21/02/20 01:01:18.47 yNkkv6Pq.net
AIに正規表現を設計させたらどんなものになるのだろう

556:デフォルトの名無しさん
2021/03


557:/03(水) 06:22:13.41 ID:7UFtTk12.net



558:デフォルトの名無しさん
21/03/03 06:44:56.40 lklpa5qm.net
> "▼ここをアクセス.*(http.*\n)+?"
python分からんけど
"▼ここをアクセス.*?(http.*?\n)"

559:デフォルトの名無しさん
21/03/03 07:02:17.82 h6piMY+h.net
>>534
レスサンクスですが、最後のURLリンク(xxxx3)を拾ってきてしまいます

560:デフォルトの名無しさん
21/03/03 07:20:09.73 h6piMY+h.net
自己解決
"▼ここをアクセス.+?(http.+?)\n"
でいいみたい

561:デフォルトの名無しさん
21/03/07 14:22:59.84 Fo2Np7TJ.net
正規表現ってパズルとしては面白いけど
URLリンク(oraclesqlpuzzle.ninja-web.net)
可読性に問題あるんじゃね?
もっとマシな別の表記方法が必要じゃないか?

562:デフォルトの名無しさん
21/03/07 16:02:01.74 UIB+9WXp.net
自分が解らないものは悪

563:デフォルトの名無しさん
21/03/07 16:17:46.75 TNmQ0Vam.net
理解の過程で可読性に問題があるのではと疑問を抱き、
別の表記法の必要性を考え、
そのあと別の表記を実際に考えるところまでやると、
正規表現考えたケン・トンプソンすげーなってなる

564:デフォルトの名無しさん
21/03/07 17:26:15.98 FZPehcc/.net
>>537
> もっとマシな別の表記方法が必要じゃないか?
定期的にそう言うのが話題になるけどなかなかいい記法が無いんだよね
abc+
程度の簡単な奴と
^((?!aaa).)*((?=aaa)a((?!aaa).)*){3,5}((?!aaa).)*$
みたいなパット見よく分からん奴を1つの記法で簡単に見易くするのはなかなか難しい

565:デフォルトの名無しさん
21/03/07 17:53:05.78 AM/Ef9W/.net
やるとしたらアスキー文字以外の文字や記号を加えてもうちょっと役割を分散させると、機能を保持しつつ見やすくはなるが、そうすると今度はラテン文字圏の人が「自分が解らないものは悪」でいかに不要かを全力で説き始めると思う。

566:デフォルトの名無しさん
21/03/07 17:56:22.71 TNmQ0Vam.net
ASCII外の文字使うと入力コストが高くなるじゃん

567:デフォルトの名無しさん
21/03/07 18:04:15.76 4bEjyVwB.net
?とか^とか二つの意味を持つのは何とかしてほしかったよな
まあ分かるからいいんだけど

568:デフォルトの名無しさん
21/03/07 20:25:01.40 RWgRWesX.net
可読性を犠牲にして短く書けるのが正規表現
正規表現と同じことを可読性の高い表現で記述しようとすればなにかと長くなる
ただある一定以上複雑な正規表現は普通のプログラミング言語で書き直したほうが可読性も保守性も高い

569:デフォルトの名無しさん
21/03/07 21:12:54.42 0cOR0yWB.net
普通のプログラミング言語で正規表現ライブラリ使ってます

570:デフォルトの名無しさん
21/03/07 21:23:44.60 FZPehcc/.net
例えば.NETみたいに正規表現中に改行入れたりコメント書けるようにするとかして可読性を上げる試みはあるね
URLリンク(www.atmarkit.co.jp)

571:デフォルトの名無しさん
21/03/07 21:31:45.50 Fo2Np7TJ.net
>>544
それしかなさそうだ

572:デフォルトの名無しさん
21/03/07 21:36:49.39 6FoXMbth.net
>>546
改行してコメント書くのは Perl の正規表現でもできたりする

573:デフォルトの名無しさん
21/03/07 21:55:32.23 RWgRWesX.net
>>546
その例にある(?<url>.*?)みたいな名前付きキャプチャも
可読性を上げられる数少ない


574:要素だと思うけど



575:デフォルトの名無しさん
21/03/07 22:46:53.20 Fo2Np7TJ.net
URLリンク(oraclesqlpuzzle.ninja-web.net)
これは解読無理やろw 課題→正規表現を思いつくことはできるかも知れんが
正規表現→課題の解読は不可能に近い
課題:行ごとで、
文字列CABと
文字列ABCのみの行を検索する。
^((C(?=AB))|((?<=C)A(?=B))|((?<=CA)B)
|(A(?=BC))|((?<=A)B(?=C))|((?<=AB)C))*$

576:デフォルトの名無しさん
21/03/07 23:05:17.93 6FoXMbth.net
>>550
^(?:CABC?|ABC(?:AB)?)+$
でよくない?

577:デフォルトの名無しさん
21/03/07 23:21:37.42 Fo2Np7TJ.net
それで同じ結果になるな regex 101 でやると

578:デフォルトの名無しさん
21/03/07 23:53:47.53 4bEjyVwB.net
正規表現には「必ず」コメントが欲しいな
できれば例も
典型例と境界例も

579:デフォルトの名無しさん
21/03/11 21:40:27.72 RBQB718T.net
お願いします
●Regular Expressionの使用環境
JavaScript
●検索か置換か?
置換
●説明
数字の文字列の間の1個以上の空白や改行を カンマで置換して繋げたい
33034640, 33034640, 21703214
●対象データ
33034640 30203225
21703214

580:デフォルトの名無しさん
21/03/11 22:14:06.84 IDj18sQF.net
>>554
¥s+をカンマで置換

581:デフォルトの名無しさん
21/03/11 22:15:56.92 IDj18sQF.net
URLリンク(regex101.com)

582:デフォルトの名無しさん
21/03/11 22:29:51.41 79QhYvaG.net
前後の数字チェック入り(区切りに\t,\fを除く)
(JavaScriptって言ってもWSH(JScript)や古いとダメ)
text.replace(/(?<=\d)[ \r\n]+(?=\d)/,", ")

583:デフォルトの名無しさん
21/03/11 22:30:57.72 79QhYvaG.net
text.replace(/(?<=\d)[ \r\n]+(?=\d)/g,", ")

584:デフォルトの名無しさん
21/03/11 23:04:03.06 RBQB718T.net
>>555
それすると文頭や文末にあるスペースにもカンマがついて変になっちゃいます。

585:デフォルトの名無しさん
21/03/11 23:08:30.44 RBQB718T.net
>>558
iPadのtextwellっていうアプリでやってるんですが・・・何故か動かないです

586:デフォルトの名無しさん
21/03/11 23:29:09.19 IDj18sQF.net
>>559
うーんなんだかなぁって感じだけど
look-behindが使えない環境ならキャプチャして上書きすればいいよ
URLリンク(regex101.com)

587:デフォルトの名無しさん
21/03/11 23:33:53.05 APoyxLpJ.net
文頭,文末のスペース,改行を残す必要がないなら先にtrimしちゃえば良いのでは
str.trim().replace(/\s+/gm, ',')

588:デフォルトの名無しさん
21/03/12 07:31:49.43 /Ahlj9GN.net
>>562
できました!ありがとうございました!

589:デフォルトの名無しさん
21/03/25 01:41:37.20 m6344zy8L
SESやアウトソーシングに就職するなら飲食のほうがマシです
URLリンク(www.youtube.com)
【客先常駐】コロナ禍で派遣されるシゴトが減っていく
URLリンク(www.youtube.com)
【就活】私が絶対行きたくない業界【転職】
URLリンク(www.youtube.com)
新卒SESで人生台無しに
URLリンク(www.youtube.com)
客先常駐の仕事だけは選ばないでください
URLリンク(www.youtube.com)
【客先常駐】コロナ禍で派遣されるシゴトが減っていく
URLリンク(www.youtube.com)
【転職】IT土方を養成するプログラミングスクールからIT業界へ?【第2新卒】
URLリンク(www.youtube.com)

590:デフォルトの名無しさん
21/03/25 17:05:14.58 m/0xUypz.net
浮動小数点数の仮数部の正規表現がたとえば
URLリンク(qiita.com)
を見ると
([0-9]+(\.[0-9]*)?|\.[0-9]+)
とかなり煩雑な感じなんですが、これを[0-9]+と\.?のインターリービングとして表記できればより簡潔になるはずなのに、なぜ正規表現にインターリービングがないのか、ご存知の方いらっしゃいませんか?

591:デフォルトの名無しさん
21/03/25 18:34:43.45 T+HzAix1.net
インターリービングとは

592:デフォルトの名無しさん
21/03/25 18:35:20.79 iRaOTaqm.net
>>565
どういう意味?
[0-9.]+
っていうことか?
12.34.56
こういうものも拾うことになるけど

593:デフォルトの名無しさん
21/03/25 18:44:54.48 ItxHMUbH.net
正規表現でやるものなのかそれ?

594:デフォルトの名無しさん
21/03/25 20:05:19.84 DBtu6Q2L.net
0-9が1回以上、.が1回以下現れるパターンを簡潔に書ければいいんだよね

595:デフォルトの名無しさん
21/03/25 20:51:18.60 T+HzAix1.net
>>565
0.123とかだけでなく.123みたいな表記も含めてるから煩雑に見えるだけでしょ


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch