正規表現道場 Part2

1nobodyさん2012/09/19(水) 18:58:43.51ID:bdgNsY2f
【正規表現道場の掟】

・言語不問

・質問も大歓迎。使用言語を書くのを忘れずに。

正規表現と関係ない話・質問は他スレへどうぞ。

前スレ
正規表現道場
http://kohada.2ch.net/test/read.cgi/php/1168450843/

318nobodyさん2018/07/04(水) 18:51:15.18ID:???
>>316
そもそも処理自体が正規表現に向いてないと思うんですけど

>>317
それ全然ダメでしょ
*はgreedyだから最初にマッチした括弧以降全部食う
あとPHPならuオプション使うべき

/(「[^「」]*」)(?:(?!(?1)).)*$/
https://regex101.com/r/AKpqav/2

何か正規表現でももっと賢い方法ありそうだけど思い浮かばなかった

319nobodyさん2018/07/05(木) 13:28:53.77ID:???
>>318
ありがとうございます。半分くらいしか分かりませんがうまくいきました。

$text = preg_replace("/(「[^「」]*」)(?:(?!(?1)).)*$/su","",$text);

320nobodyさん2018/07/06(金) 12:54:34.90ID:???
age

321nobodyさん2018/07/08(日) 09:24:45.77ID:???
txtファイルで20文字目で改行したいのです。
20文字目で改行コードを挿入すればいいのかなと思ったのですが、
書き方がわかりません。
よろしければどなたか教えてください。

322nobodyさん2018/07/08(日) 09:51:47.81ID:???
/\A(.{20})/$1\n/

3233212018/07/08(日) 10:40:14.52ID:???
>>322
レスありがとうございます。
説明が足りず申し訳ありません。
例えばなんですが、秀丸エディタのような正規表現の置換に対応したテキストエディタで
<置換前>
あいうえおかきくけこさしすせそ
たちつてとなにぬねのはひふへほ
<置換後>
あいうえお
かきくけこ
さしすせそ
たちつてと
なにぬねの
はひふへほ
これは5文字目で改行させた場合の例ですが、これを20文字目で改行させたいということなんです。
で、<置換前><置換後>に正規表現でどのように書けばいいのかということなんですが、いかがでしょう?

324nobodyさん2018/07/08(日) 10:51:45.42ID:???
>>323
秀丸 タグ付き正規表現
で検索するといいかも?

3253212018/07/08(日) 11:37:21.89ID:???
>>324
検索してみたら、そのものずばりがありました。
【秀丸エディタ】正規表現を用いて指定文字数で改行させる方法
https://nodoame.net/archives/4675
どうもありがとうございました。

326nobodyさん2018/09/30(日) 10:40:36.91ID:???
書き込めないテスト

327nobodyさん2018/09/30(日) 10:49:02.82ID:???
test
行数?

328nobodyさん2018/09/30(日) 10:50:04.80ID:???
IllustratorCS以降のスクリプトで縦中横を正規表現でしたいのですが
ググっても見つからないので自作しようと

縦書きテキストの縦中横を自動処理
var matchStr = /[0-9]/ ;  //これをベースに↓
htt p://d-p.2-d.jp/ai-js/pages/01_scripts/text/index.html#14_text_vertical_folder
これだと半角1文字か2文字の数値のみで 小数点が間にあると1文字ずつバラバラに適用されてしまいます

半角数字2〜3文字(以上) かつ 途中に小数点ピリオド有無 を縦中横に
半角欧数字が1文字の場合は 全角に
したいです JavaScript

329nobodyさん2018/09/30(日) 10:53:25.45ID:???
数字とドットを判別する正規表現
^[1-9][0-9]+$|^[1-9][0-9]+\.?[0-9]+$
htt p://lma ker.blo g17.f c 2.com/blo g-en try-169.html
これだとうまく走りません
先頭数字が0でもかまわないので
^[0-9][0-9]+$|^[0-9][0-9]+\.?[0-9]+$   //や
^[0-9]+$|^[0-9]+\.?[0-9]+$       //を試してみましたが 駄目でした

NGワードtest回避

330nobodyさん2018/09/30(日) 11:07:07.10ID:???
頭にマイナス文字が来るのを忘れていました

331nobodyさん2018/09/30(日) 16:42:39.78ID:???
URLは見せたいのか伏せたいのかどっちやねん

332nobodyさん2018/09/30(日) 16:47:40.24ID:???
URLは5chのNGワードにひっかかってるみたいで
すみません

333nobodyさん2018/09/30(日) 19:23:05.09ID:???
直接の答えじゃなくてすまんけど。

正規表現で^は行の先頭を意味するけど、それは意図とあってる?
縦書きに紛れる数字って行の先頭とは限らないんじゃないかな。

334nobodyさん2018/09/30(日) 19:28:31.97ID:???
一度に書けなくてすまん。
$も、あれは行末を意味するからそれも意図とあってるかな?

縦書きする日本語
数字部分
縦書きする日本語

という原稿なら俺のツッコミは余計なのでごめん。
逆に言うとそういう原稿じゃないと機能しないと思うよ。

335nobodyさん2018/09/30(日) 21:08:42.98ID:???
>>333
^が行の一番目から数字かどうかを見ていたから
$が行末を見ていたから
下のは走らなかったんですね

文中の数字なので、そのご指摘であってます
初歩的な内容ですみません
とりあえず頭と尻を取ってみてみます
こんな過疎なのにありがとうございます

336nobodyさん2018/09/30(日) 21:18:43.88ID:???
/[0-9]+$|^[1-9][0-9]+\.?[0-9]+/ ;  //では駄目でした……
練習テスト

328nobodyさん2018/09/30(日) 10:50:04.80ID:???

この文字列を
↓こうしたい ヒット希望する箇所=【 】

【328】nobodyさん【2018】/【09】/【30】(日) 【10】:【50】:【04.80】ID:???

337nobodyさん2018/09/30(日) 21:24:20.04ID:???
386 や 38.6 みたいな数字だけのも試しましたが
386 には無効で 38.6 は 38 と ピリオド と 6 とに分けられて効きました

正規表現よりスクリプトの中身の処理なのかもしれません
う〜ん

338nobodyさん2018/09/30(日) 22:48:44.95ID:???
いま手元に試せる環境ないけど、でもまだ環境を疑う前の状態、正規表現が完成してない状態だと思う。余裕あったら336の最後、試してみるね。

339nobodyさん2018/09/30(日) 22:51:33.68ID:???
>>336
例文の328nobodyの328は必ず3桁?

340nobodyさん2018/10/01(月) 08:40:14.19ID:???
>>339
>>328>>330 の画像のように
必ず3桁とは限りませんですね
4桁以上のこともありますので

341nobodyさん2018/10/01(月) 09:15:39.08ID:???
[+-]?[0-9]+(?:\.[0-9]+)?

https://regex101.com/r/aPT3sE/1

342nobodyさん2018/10/01(月) 11:05:20.10ID:???
>>341
プラスマイマスまで処理していただいて
ありがとうございます

システムのプログラムが本職ではないので
こういうのが苦手でした
正規表現処理としては合っているのですが
スクリプトは半角数字1〜2文字のみを処理するだけで
3桁数字もプラスもマイナスも小数点も駄目でした
本当にお手間をおかけしました
今回はあきらめてみます う〜ん……

343nobodyさん2018/10/18(木) 16:57:45.42ID:ks7bneBP
自分に対して「ガイジ」って言ってくる奴をNGみたいなの出来る?

344nobodyさん2018/10/18(木) 17:27:56.89ID:???
無理だと思う。どのレス番が自分なのか予め分かってる必要があるけどそれが難しいんじゃないかな。

345nobodyさん2018/10/19(金) 07:53:00.28ID:???
 私たち日本人の、日本国憲法を改正しましょう。
総ム省の、『憲法改正國民投票法』、でググって
みてください。拡散も含め、お願い致します。

346nobodyさん2018/10/20(土) 10:38:55.21ID:Isa88TJv
perlをphp化しようとしています。
perlの$`や$'のようなマッチの前後の文字列を取り出すことはできますか?
また、tr/A-Z/A-Z/のような変換は、変換則をいちいち配列で指定しないとできないのでしょうか。

347nobodyさん2018/10/20(土) 12:59:24.05ID:???
>>346
後者は正規表現じゃなくてmb_convert_kanaじゃあかんの?

348nobodyさん2018/10/22(月) 04:46:36.26ID:F6qPDtGA
スレ内のランダムで3回以上繰り返される同一の文章をNGできますか?

349nobodyさん2018/10/22(月) 05:47:20.33ID:F6qPDtGA
細かく説明するとスクリプトコピペ荒らしのコピペ内容が一定期間で変わってしまうというので困っています

V2Cの正規表現で似たもの見つけましたが、janeでは使えませんでした。
(?:^|\n)(.{5,}\n(.*\n){0,2})\1{3}

350nobodyさん2018/10/22(月) 06:55:08.17ID:???
Janeはdatは取得したそのままで何も加工しないので
改行は\nではなくて<br>となる
また、各行の先頭と末尾に半角空白が付加されている
実際にレスがどうなっているのかはdatを覗いてみるのが一番

351nobodyさん2018/10/24(水) 08:06:13.02ID:???
JavaScriptで
<table class="aaa" border="1" xxx="yyy" ...(略)>
これを
.replace( /class="(S+)"/g, '.$1' )
で、
<table .aaa border="1" ....>
の形にすることができました。

今度は
<table class="aaa bbb ccc (略)" border="1" xxx="yyy" ...(略)>
これを、border以降を巻き込むことなく
<table .aaa .bbb .ccc (略) border="1" ...>
の形にしたいのですが、どうすればよいでしょうか…?
「=」を含まないようにすればいいんだとは思いますが、なんだかごちゃごちゃするばかりでうまくいきませんでした。

3523512018/10/25(木) 00:42:51.39ID:???
その後色々試して見た結果
replace( /class=["\s]((.+)+)"/g, '.$1' )
とすることで
<table .aaa bbb ccc (略) border="1" ...>
の形にすることができました。

しかし、.aaa .bbb .ccc のように繰り返して「.」を付加する方法がわかりません。
おとなしく2回に分けて置換するほかないのでしょうか?

replace( /class="(.+\s)?(.+)(\s.+)?"/g, '.$2' )
…これだと1回しか置換できませんね…

353nobodyさん2018/10/25(木) 14:19:15.03ID:???
すいません質問させてください
専ブラアプリのchmateで連続投稿、連レスをNGに出来ませんか?
連続でなくても、同一IDで沢山書き込んでいるのをNGにしたいのです
毎日NGIDとして登録すれば済む話しなんですが‥
正規表現で一定数以上の書き込みをNGにしたいのです
よろしくお願いします

354nobodyさん2018/10/30(火) 16:07:23.36ID:???
「あいう
えお」
『かきくけ
こ』

のような場合に改行を詰めたいのですが

^[」』](\r?\n)

を置換して消そうとしてもうまくいきませんでした
どうすれば詰めることができるでしょうか

(使用環境はAutoHotkeyです)

355nobodyさん2018/10/30(火) 16:53:51.94ID:???
>>354
違ってたらごめんだけど、^の後に何がきても的な指定が足りてないんちゃう?

行頭、ほにゃらら、」または』、改行

とするのがいいんじゃないかなぁと。

3563542018/10/30(火) 18:03:23.40ID:???
>>355
あ、^は行頭ではなく、[]内の否定でした…

」や』で終わってたらOK(置換しない)
」や』以外で終わってたら、改行コードを削除して詰める
という感じです

^(.+)[^」』]\r?\n

なんか違いますね…
試しにこれでやってみると

「あいう」
『えお』
「かきく
けこ」



「あいう」『えお』
「かきく
けこ」

になるので逆っぽい…
どうも[^]による否定ができていない気がします
一応、AutoHotKeyの正規表現でも[^]による否定はできるはずなんですけど

357nobodyさん2018/11/10(土) 19:29:23.78ID:6srco+Il

358nobodyさん2018/11/25(日) 15:27:10.04ID:TICRp/KJ
教えて下さい。
!と!に該当させたいけれど、!?と!?の場合は除外したい場合、
どのような正規表現になるでしょうか。

359nobodyさん2018/11/25(日) 16:51:24.42ID:???
>>358
(?![!!][??])[!!]

360nobodyさん2018/11/25(日) 17:08:57.74ID:???
質問スレ2つもあるけどどっちかにまとめたほうがいいな

Regular Expression(正規表現) Part14
https://mevius.5ch.net/test/read.cgi/tech/1489511075/

361nobodyさん2018/11/26(月) 01:38:23.06ID:???
質問はこちらへ

Regular Expression(正規表現) Part14
https://mevius.5ch.net/test/read.cgi/tech/1489511075/

362nobodyさん2018/11/26(月) 07:47:55.88ID:???
1に質問大歓迎とあるが

363nobodyさん2018/12/31(月) 08:50:07.88ID:???
アドレスを編集しているんですけど
:80だけ消してたとえば:8001,:6080とか
80が含まれる数字は残したいんですけどどうやればいいんでしょうか
さくらエディターつかってます

364nobodyさん2019/01/14(月) 16:34:17.89ID:???
PHPで改行以外の制御文字を空文字に置換したいと思い次のように書きました。

preg_replace( '/(?!\n)[\p{Cc}]/u' , '' , $ver );

この場合、否定先読みで\nを指定しているのですが、\rも指定した方が良いのでしょうか。
詳しい方、アドバイスをください。
よろしくお願いします。

365nobodyさん2019/01/27(日) 18:09:07.98ID:???
そういえば\Rは\rや\nにマッチするって見かけたけど、間にある垂直タブや書式送りにもマッチするよな

366nobodyさん2019/03/24(日) 10:07:25.65ID:???
鬼太郎実況スレに現れる軍オタ荒しはどうNGすればいいんでしょうか

荒らす個々の文が違うのでやってもやっても消えません

367nobodyさん2019/07/07(日) 22:05:47.87ID:???
GreasemonkeyのスクリプトでニコニコのコメントをNGにするため
正規表現がうまく適用できなくて

任意の文字列が4字以上連続
.{4,}

スクリプトのほうの問題ならあきらめます

368nobodyさん2019/07/30(火) 15:45:55.91ID:???

新着レスの表示
レスを投稿する