22/08/28 14:30:01.62 HKThARKH.net
なぜ組み合わせたいのかがよくわからんな
後半のパターン部分を素で書けば良いと思うんだけど、あえて暴言を目視したいスレでもあるんだろうか?
510:デフォルトの名無しさん
22/08/28 14:36:53.39 q8tm2XHG.net
単発のNGの他に連鎖NGとかIDごとNGとかあるだろ
わからないなら黙ってろよ
511:デフォルトの名無しさん
22/08/28 16:16:08.48 XxcpkpFs.net
ごめん
512:デフォルトの名無しさん
22/09/04 01:47:12.24 0/i0sC9q.net
GNU grep 3.8 (2022-09-02)から-Pオプションのリンク先がPCRE2になったらしい
それ以前は古いPCREだった
-Pオプションが機能しないWindows版grepバイナリには関係のない話だけど
513:デフォルトの名無しさん
22/09/04 07:42:45.45 pCQ9P7Vy.net
1
2
あ
10
77
100
150
1000
3桁までの数字のみをする場合
[0-9]{,3}だとダメでした
正規表現チェッカーでいろいろ試しているですが分かりません
200までの数字だとどうしたらいいですか?
514:デフォルトの名無しさん
22/09/04 08:41:45.13 x2tuNrOY.net
URLリンク(www.simple-edition.com)
[1-9]|[1-9][0-9]|1[0-9]{2}|200
で範囲を作ったものを
URLリンク(weblabo.oscasierra.net)
ここに代入しても使えませんでした
「正規表現」の意味合いが違うんでしょうか?
515:デフォルトの名無しさん
22/09/04 09:08:03.10 MIQciAoV.net
>>503
それだと92000の200にもマッチしてしまうよ
インド数字等を気にしないなら[0-9]は[\d]でもOK
(?<![0-9])(?:200|[1][0-9]{2}|[1-9][0-9]|[0-9])(?![0-9])
516:デフォルトの名無しさん
22/09/04 09:46:10.78 ZQZ632xa.net
>>503
[0-9]{1,3}
これだと結果でるようだけどそのサイトm値省略不可なのでは
他に | のorも説明ないようなのでダメとか
正規表現文法どこまで対応してるかは動かす環境次第なので質問テンプレートにも入力項目になってんだけど
>>1
517:デフォルトの名無しさん
22/09/04 10:07:01.01 qlj2b1lm.net
すまない
●Regular Expressionの使用環境
iPhone,a-shellというアプリ
●検索か置換か?
検索
●説明
フォルダ内にある写真を圧縮するため
●対象データ
1から200などのjpegとかの画像
●希望する結果
検索してそれをまとめて圧縮
518:デフォルトの名無しさん
22/09/04 10:19:49.12 NNtN3+VI.net
まあ案件次第だけど
> 200までの数字だとどうしたらいいですか?
とかなら\d+で取得してアプリケーション側で弾くのが後の保
519:守を含めて簡単かと思う
520:デフォルトの名無しさん
22/09/13 19:48:53.80 aae9uQ50.net
スルーされにくい質問のテンプレと例
●Regular Expressionの使用環境
PowerShell7.2
●検索か置換か?
置換
●説明
文中(先頭及び文末以外)の0が連続して3つ以上並ぶ部分をハイフン(-)に置換したい
●対象データ
123000444
000123000
1230000000444
●希望する結果
123-444
000123000
123-444
よろしくお願いいたします。
521:デフォルトの名無しさん
22/09/13 20:02:34.86 BFM47HY2.net
(?<!^)000+(?!$)
-
522:デフォルトの名無しさん
22/09/13 20:23:28.22 el3nukes.net
00000 → 0-0 ?
523:デフォルトの名無しさん
22/09/13 20:37:38.14 G28B9gdh.net
ああ、
00001200030000
を
0-12-3-0
とするのか (>>509のやつ)
先頭末尾に繋がっている0は無視したい
000012-30000
のか例からだと不明だね
524:デフォルトの名無しさん
22/09/13 21:45:26.67 aae9uQ50.net
508です。
早くもいろいろご回答いただきありがとうございます。
そしてすみません、みなさまのリプを見て自分の考えが足りなかったことに気付きました…
変換は一度だけ、先頭から数えてもっとも近いもののみです。
正しく書き直します、すみません。
スルーされにくい質問のテンプレと例
●Regular Expressionの使用環境
PowerShell7.2
●検索か置換か?
置換
●説明
文中(先頭及び文末以外)の0が連続して3つ以上並ぶ部分をハイフン(-)に置換したい
(先頭から数えて最初の一致のみ)
●対象データ
123000444
000123000
1230000000444
12000045600006
●希望する結果
123-444
000123000
123-444
12-45600006
よろしくお願いいたします。
525:デフォルトの名無しさん
22/09/13 22:09:54.11 jeF3JQfM.net
>>511
> 先頭末尾に繋がっている0は無視したい
こんな条件どこから出てきたんだ?
526:デフォルトの名無しさん
22/09/13 22:20:12.97 GLLSFlxd.net
「文中(先頭及び文末以外)の0」が連続して3つ以上並ぶ部分
文中(先頭及び文末以外)の「0が連続して3つ以上並ぶ部分」
527:デフォルトの名無しさん
22/09/13 22:24:49.17 clq+OpKM.net
^([1-9]+)0+(\d+)$ --> $1-$2
でいかがでしょう
528:デフォルトの名無しさん
22/09/13 22:33:07.80 clq+OpKM.net
あ、「ゼロ3つ以上」を満たしてなかった
また考えますー
529:デフォルトの名無しさん
22/09/13 22:35:39.26 clq+OpKM.net
^([1-9]+)0{3,}(\d+)$ --> $1-$2
でしょーか
530:デフォルトの名無しさん
22/09/13 22:46:39.11 7uE/UK4/.net
010001
531:デフォルトの名無しさん
22/09/13 23:08:19.66 G28B9gdh.net
>>513
> 文中(先頭及び文末以外)の0が
の説明と例からだと
「先頭以外」が先頭の0、1文字を指すのか
先頭から続く0の塊を指すのか不明でしょ
> 3つ以上並ぶ部分
が強欲なのか?欲張りでいいのか?が不明 >>511 さんの質問だね
532:デフォルトの名無しさん
22/09/13 23:09:06.59 G28B9gdh.net
>>519
訂正、>>510さんの質問
533:デフォルトの名無しさん
22/09/13 23:10:13.89 aae9uQ50.net
みなさんありがとうございます!
できそうな正規表現がありうれしいです。
すみませんが今手元に環境がないため明日動作させて確認します。
534:デフォルトの名無しさん
22/09/13 23:20:09.73 aae9uQ50.net
そして自分でも要件を言葉にできておらず申し訳ありません
みなさんに質問いただいて初めて気付きましたが、
先頭及び末尾が0であった場合、そこから連続する0は除外する ができると一番望ましいです。
00001200034000
↓
000012-34000
となります。
返信遅くなりすみません。
535:デフォルトの名無しさん
22/09/13 23:44:59.39 G28B9gdh.net
(?<!^)(?>0{3,})(?!$)
未test
最初のマッチだけ置換は以下
URLリンク(social.technet.microsoft.com)
536:デフォルトの名無しさん
22/09/14 00:51:16.34 4SNfctPQ.net
>>518
あかんすね…
^(0*)((0{0,2}[1-9])+)0{3,}([1-9]\d*)$ --> $1$2-$4
これはどーでしょう?
537:デフォルトの名無しさん
22/09/14 05:23:58.73 E5sTi1VY.net
([1-9])0000*([1-9][0-9]*)
$1-$2
538:デフォルトの名無しさん
22/09/14 09:12:22.80 Kn3Wl+2J.net
(?<=[1-9])(?>000+)(?!$)(.+)$
-$1
539:デフォルトの名無しさん
22/09/14 09:38:59.41 s0UMl1ds.net
(^[^0].*?)0{3,}([^0].*?$)
$1-$2
540:デフォルトの名無しさん
22/09/14 10:42:18.62 6Qq1IObP.net
○ >>524,525,526
✕ >>523,527
541:デフォルトの名無しさん
22/09/14 19:22:12.74 +0SwTq6N.net
508です。
沢山の案ありがとうございました、本当に助かりました。
一通り試して正しく動くものは沢山あったのですが、
以下の方式で解決させていただきました。
$reg=[regex]'([1-9])0000*([1-9][0-9]*)'
$reg.Replace($str,'$1-$2',1)
また、上記の案以外もこんな解決方法があるのかととても勉強になりました。
そして自分が要件をまとめられてなかったことにも反省いたしました。
今後はこちらで回答する側になれるよう、再度勉強いたします。
重ね重ね本当にありがとうございました。
542:デフォルトの名無しさん
22/09/14 19:57:00.91 b2aEm1i9.net
回答にある正規表現は置換回数を指定できない置換方法でも大丈夫
置換回数に1を指定する方法でやるなら単に ([1-9])0000*([1-9]) でもいい
543:デフォルトの名無しさん
22/09/14 22:22:31.78 +0SwTq6N.net
>530
確かに、教えていただいたこともりもりにしてしまいましたが
わざわざ[1-9]のあとに[0-9]を入れている意味がないですね…。
ご指摘ありがとうございます。
544:デフォルトの名無しさん
22/09/18 12:56:41.18 QaJ1iFM2.net
githubで結構探したんですがそれっぽいのが見つからず、お力お貸しください。
●Regular Expressionの使用環境
AutoHotKey1.1系
●検索か置換か?
置換
●説明
2つのクォーテーションマークに囲まれたパスのうち、1つ目(app.exe)を削除したい。
囲まれたパス同士は半角スペースで接続される。
●対象データ
"D:\Dir_Path\_app.exe" "D:\Dir_Path\_script.ahk"
^^^^^^^^^^^^^^^^^^^^^^^
●希望する結果
"D:\Dir_Path\_script.ahk"
545:デフォルトの名無しさん
22/09/18 16:16:05.56 wjpqonb4.net
>>532
URLリンク(regex101.com)
546:デフォルトの名無しさん
22/09/18 19:20:15.15 /uA/jgNo.net
>>533
ありがとうございますめちゃくちゃシンプルでした!あとこのregexサービスいいですね
".*"\s だと構文エラー吐きました
置換関数内(””の中)で”がうまく扱えないので頑張ってみます。
547:デフォルトの名無しさん
22/09/18 21:26:30.42 CbZe8FP4.net
"を
\"
や
\x22
に置き換えて試してみてわ
548:デフォルトの名無しさん
22/09/19 16:41:30.36 4iw9Mtek.net
>>535
ありがとうございます、いけました
(ついでに””も削除)
\x22.*\x22\s|\x22
549:デフォルトの名無しさん
22/09/20 02:58:09.09 94I1wBUa.net
二重引用符のエスケープは重ねて""だな
"".*""\s
550:デフォルトの名無しさん
22/10/29 13:09:46.30 ec13kmtS.net
●Regular Expressionの使用環境
PCRE2
●検索か置換か?
検索
●説明
(..[\0@-g]\0){147}などを高速に検索したい
●対象データ
メガ単位のバイナリファイル(リトルエンディアン)
●希望する結果
説明は一例なので前中後にリテラルパターンが入る事もありますが(16KiBを越える事も)、固定長で
一定範囲だが不明な32bit値(0または0x00400000~0x00670000付近)を含むブロック位置を列挙したいです
現状PCRE2で検索は出来ていますが、Intel Hyperscanだと
util/determinise.h:determinise:162:succ_id 16383 >
551:= state_limit 16383 ng_mcclellan.cpp:buildMcClellan:590:state limit exceeded rose_build_add.cpp:addOutfix:1779:could not build as either an NFA or a DFA ng.cpp:addGraph:507:could not compile component 0 with 592 vertices と言われて説明の例に限っては正規表現のコンパイルすら不可能です 32bit値は4バイト境界に限りませんが、ブロック先頭は4バイト境界なのでそこから高速化したいのですが 「(?>....)*?\K」を接頭しようとするとPCRE2_ANCHOREDはJITで使えませんし、そもそも遅くなるようです 今のところプログラム側でオフセットが4バイト境界のみを拾い、次の検索開始もアライメントしています コールアウトもお察し…こういったパターンに適した書き方、又はCライブラリが有れば教えて欲しいです
552:デフォルトの名無しさん
22/10/29 19:31:13.26 9Ey1MUJ8.net
>>538
\0@って何?
\c@でNULL文字検索の意味ではないの?
553:デフォルトの名無しさん
22/10/29 19:42:35.80 ec13kmtS.net
>>539
文字クラス[\0@-g]なので表記を統一するなら[\x00\x40-\x67]になります
554:デフォルトの名無しさん
22/10/30 10:24:48.15 dZd+t5oq.net
スプレッドシートで20221030と入力されている数字を日付の表記?2022/10/30なのか10/30/2022なのかわからないけどDATEDIF関数に使える形に置換する正規表現ってどう書きますでしょうか
555:デフォルトの名無しさん
22/10/30 11:55:42.97 oF72FRjI.net
>>541
正規表現では無理。スレチ
DATE関数で日付にかDATEVALUE関数でシリアル値に変換
セルA1の値:20221030
=DATE(LEFT(A1,4),MID(A1,5,2),RIGHT(A1,2))
=DATEDIF(DATE(LEFT(A1,4),MID(A1,5,2),RIGHT(A1,2)),"2022/11/01","D")
556:デフォルトの名無しさん
22/10/30 12:28:15.07 S1PTRz+V.net
>>541
=DATEVALUE(REGEXREPLACE(A1, "^(....)(..)(..)$", "$1/$2/$3"))
>>542
スレチ
557:デフォルトの名無しさん
22/11/02 14:16:53.69 gx4Z74sz.net
すいません。
0と正の整数のみにマッチする正規表現はどう書きますか
----
OK
0
1
22
303
999999
----
NG
-3
z55
0.33
558:デフォルトの名無しさん
22/11/02 14:20:50.51 4jxQNd6r.net
^\d+$
559:デフォルトの名無しさん
22/11/02 14:26:53.26 gx4Z74sz.net
ありがとうございました!
560:デフォルトの名無しさん
22/11/02 14:39:57.52 Hz9+pCnD.net
00
00000000
012
003102
とかはええんかC言語だと8進数なんだけど
561:デフォルトの名無しさん
22/11/02 14:57:45.88 mLb2a5cx.net
最近は8進数を0oと書くのが主流じゃね?
562:デフォルトの名無しさん
22/11/02 15:14:09.32 gx4Z74sz.net
いやよくないのですが。。
563:デフォルトの名無しさん
22/11/02 22:52:34.87 WMtJS4K4.net
>>547
なぜC言語?
564:デフォルトの名無しさん
22/11/03 13:08:35.66 yr3S2O5F.net
^(?:0|[1-9]\d*+)$
565:デフォルトの名無しさん
22/11/03 23:35:12.45 gGr9RQjz.net
A(B(1), C(2)), B(3), C(4), A(D(5))の
A(B(1), C(2))とA(D(5))の両方にマッチする表現できますでしょうか?
566:デフォルトの名無しさん
22/11/04 00:21:55.02 Rv2RlvZT.net
A\([BD]\([15]\)(, C\(2\))?\)
567:デフォルトの名無しさん
22/11/04 00:32:30.76 u3TD418O.net
>>552
関数名は英数字1文字、ネストされた関数の引数は数字1文字にしてるけどこんな感じでいけるかと
\w\(\w\(\d\)(?:,\s*\w\(\d\))*\)
URLリンク(i.imgur.com)
568:デフォルトの名無しさん
22/11/04 19:23:25.88 aOu/uEdM.net
>>553-554
参考になりました
ありがとうございます
569:デフォルトの名無しさん
22/11/05 19:55:25.05 xnenmrxP.net
下のようなテキストがあった時、
フシギダネ、たねポケモン。生まれてから、しばらくの間は背中のタネから栄養をもらって大きく育つ。
フシギソウ、たねポケモン。背中のつぼみがふくらみだすと、あまい匂いが漂い始める。
フシギバナ、たねポケモン。雨の降った翌日は、背中の花の香りが強まる。
その行で最初に出てきた「、」だけをTabで置換したいのですが、
正規表現でなんとかできますかね?(´・ω・`)
570:デフォルトの名無しさん
22/11/05 19:57:13.42 Gow5Zgrm.net
顔文字が気持ち悪い
571:デフォルトの名無しさん
22/11/05 19:57:30.67 KyEMh/LJ.net
マルチラインモードのg無し置換でええのでは?
572:デフォルトの名無しさん
22/11/05 20:01:38.81 xnenmrxP.net
すみません。7分で自己解決しました。(´・ω・`)
573:デフォルトの名無しさん
22/11/06 18:52:14.69 Ju9kLy6l.net
>>559.replace('(´・ω・`)', '');
574:デフォルトの名無しさん
22/11/06 18:56:40.82 gpiofWbc.net
>>560
エスケープしろ
575:デフォルトの名無しさん
22/12/01 00:48:55.16 7b6m1q/M.net
師走だ
576:デフォルトの名無しさん
22/12/01 20:43:42.13 MJwbaGOX.net
>>556
^(.*?)、(.*)$ → $1¥t$2
577:デフォルトの名無しさん
22/12/07 17:35:07.95 hI2dpmO3.net
正規表現はコードを分かりにくくする非常に悪い技術だと思います。
早く廃止され、代替方法が見つかってほしいです。
578:デフォルトの名無しさん
22/12/07 18:06:34.78 Zr5hf/of.net
それは思うけどqwertyキーボードですらこの半世紀何も変わってないし、Legacy引き摺る類のUIは余程の転換期でも起こらない限り無理なんじゃないかな
579:デフォルトの名無しさん
22/12/07 18:23:42.79 IT7suRvF.net
>>564
わかりやすくて使い物にならないものができあがる予感
580:デフォルトの名無しさん
22/12/07 18:33:23.28 8ZB5Tvh5.net
物事の「本質的な複雑さ」を解決しようとしても「その場でぐるぐる回り続ける」ハメになるだけ(どこにもたどり着くことはない)
581:デフォルトの名無しさん
22/12/07 21:37:36.61 lzjCqHmQ.net
正規表現を分かりやすい自然言語や仕様記述に変換するサービス作れば解決
正規表現を生成する機能も用意して最適化オプションもつければ有償で十分やっていける
582:デフォルトの名無しさん
22/12/07 22:46:38.37 0xPH+d9p.net
>>568
とりあえずそう言うアプリにお前ならいくら払うんだ?
583:デフォルトの名無しさん
22/12/08 10:58:46.31 c3lwHRlZ.net
>>564
それはそうなんだけど
徹夜で必死に考えいいアイデアを提供して下さい
584:デフォルトの名無しさん
22/12/11 15:34:21.97 xFkTi0uS.net
abc-ABC
abcd-ABC-def
abcde-defghi-ABC
ab-def-ghi-ABC
-ABCより前にハイフンのない-ABCを選択するのに3,4行目を除外する事で出来たのですが直接-ABCを選択するような事って出来ますか? 使うのはpythonです。よろしくお願いします
585:デフォルトの名無しさん
22/12/11 15:49:22.27 xFkTi0uS.net
あ、行頭を指定すれば簡単に出来ましたスレ汚しすみませんでした
586:デフォルトの名無しさん
22/12/26 08:14:24.98 G31tf+Le.net
質問です
私に全然知識がないのですごい初歩的な質問になるのですが
例えば“テキ”を検索するとして
“仮テキスト”となっているのは除く、
ホワイトリストを付随するような検索をするにはどうすればいいでしょうか?
私が試したもの、
(?<!仮)テキ(?!スト)
↑例えばこれだと“仮テキ”や“テキスト”まで除かれてしまいます
(おそらく「そりゃ当たり前だろ」と思われる事を言ってると思うのですがなにぶん知識がないためご容赦ください)
正規表現を使う場所としてはchmateやFirefoxアドオンなどで使っています
浅学バリバリな質問なのですがどうかご回答よろしくお願いします
587:デフォルトの名無しさん
22/12/26 08:18:23.33 LqfRRdYe.net
>>573
知識以前にお前馬鹿そうだから、>>2のテンプレ使って書き直して
588:デフォルトの名無しさん
22/12/26 10:07:19.58 5uJMWDBy.net
(?<!仮)テキ|テキ(?!スト)
589:デフォルトの名無しさん
22/12/27 04:47:48.03 xSShEST7.net
>>574
すいません、確かにテンプレ使った方が良かったですね…
>>575
ありがとうございます
単純な話だったんですね…
教えて貰って図々しいのですが
長くなってもいいので“仮テキスト”という続いた文字列を含めて
同じ動作をする正規表現はあるのでしょうか?
あった場合教えていただきたいです…
590:デフォルトの名無しさん
22/12/27 17:03:22.33 G2ophMPv.net
テキ(?!..(?<=仮テキスト))
591:デフォルトの名無しさん
22/12/28 01:36:28.87 Ztu+b3Ae.net
>>577
ありがとうございます
仕組みも分かったため複数指定もでき望んでいた事がやれました
初歩的な事にわざわざお付き合いいただきありがとうございました
592:デフォルトの名無しさん
22/12/29 18:17:40.05 HWC94+Gl.net
正規表現は半年後の自分がメンテできないから嫌なんだわ
特にその時適当に書いて辛うじて動いてるやつなのか会心の出来だったやつなのか一見判らなくて困るんだわ
正規表現に10段階ぐらい完成度のタグを付けたいのだよハイパーテキスト的にな
そういう気の利いて手軽な方法はないのかのう
593:デフォルトの名無しさん
22/12/29 19:06:41.81 W/by+W2J.net
人から貰った正規表現を理解もせずに自分の物にしていないからそんな事が起こる
自分で書いた正規表現なら何年経ってもパッと見りゃ内容解る
と言うか年々理解度が向上するから、見てがっかりして書き直すまである
594:デフォルトの名無しさん
22/12/29 19:37:11.07 HWC94+Gl.net
>と言うか年々理解度が向上するから
若いってええなあ
あと10年もすれば昔の自分の方が頭いいじゃねえか状態になるから今ががんばり時だよ
595:デフォルトの名無しさん
22/12/29 19:46:27.85 JPv7+i4s.net
>>579
コメント付けられる方言もあるがな
596:デフォルトの名無しさん
22/12/29 20:16:21.35 Y6+rT86n.net
>>581
すまんもう60越えとる
597:デフォルトの名無しさん
22/12/29 21:08:41.79 5pKgQfqK.net
テスト書かないんだろ
598:デフォルトの名無しさん
22/12/29 23:00:20.15 zukJLKA9.net
そのうち、こうこうしたいと書くとそれに合った正規表現を出力するAIが出て来る
たぶん
599:デフォルトの名無しさん
22/12/29 23:37:13.29 VQTP+Rjm.net
>>585
今でもchatGPTで出来る
600:デフォルトの名無しさん
22/12/30 00:14:09.14 QnG1dvSt.net
今では正規表現中にコメントが書ける(拡張形式ignore whitespace)ものも多いのでは
601:デフォルトの名無しさん
22/12/30 01:37:49.63 1dcL6xM/.net
>>586
あれサラッとでまかせ混ぜてくるから油断ならん
まさに詐欺師の所業よ
602:デフォルトの名無しさん
22/12/30 05:43:41.86 gQwuuolL.net
正規表現の高齢化問題
今の子って正規表現に触れる機会あんのかなあ
糞みたいなエスケープシーケンスの概念込みで教えなきゃならんし
授業ではすきっぷやな
603:デフォルトの名無しさん
22/12/31 09:31:33.47 3UMVip3o.net
>>585
ここが…
604:デフォルトの名無しさん
22/12/31 19:47:02.85 yp0KXAnH.net
字幕ファイルの修正で秀丸を使って
文字列の置き換えしたいと考えています
置換前
00:00:06:09 - 00:00:10:47
おはよう
00:00:11:18 - 00:00:16:02
こんにちは
置換後
00:00:06.090,00:00:10.470
おはよう
00:00:11.180,00:00:16.020
こんにちは
----
対象データ
”xx:xx:xx:xx - xx:xx:xx:xx”
":xx - "を".xx0,"に置き換え
最後の"xx"を"xx0"に置き換え
希望結果
”xx:xx:xx.xx0,xx:xx:xx.xx0”
お願い致します
605:デフォルトの名無しさん
22/12/31 21:20:45.11 gFIlpiwK.net
せっかく秀丸スレあるんだからそっちで聞けばいいのに
HmJre.dll V.510
^([0-9:]+):([0-9]{2}) - ([0-9:]+):([0-9]{2})$
\1.\20,\3.\40
606:591
22/12/31 22:37:29.30 yp0KXAnH.net
大晦日のツンデレさんに圧倒的感謝!!
ありがとうございます
607:デフォルトの名無しさん
23/01/04 10:29:42.45 vMZ55Vj6.net
教えてくださいm(__)m
[あああ(いいい)]
のような文字列を
[いいい](あああ)
と置き換える方法はあるでしょうか
608:デフォルトの名無しさん
23/01/04 12:23:22.97 gCqYqHxa.net
[あああ(いいい)]で検索して
[いいい](あああ)で置換する
609:デフォルトの名無しさん
23/01/04 12:35:30.42 Gtp9NVd3.net
テンプレ無視する馬鹿にはその答で十分だわな
610:デフォルトの名無しさん
23/01/04 12:40:09.77 k64eH4zi.net
まあ一例として
s/\[([^\[\]\(\)]+)\(([^\[\]\(\)]+)\)\]/[$2]($1)/
611:デフォルトの名無しさん
23/01/04 13:41:53.53 sAqw0ZzI.net
>>594
URLリンク(glot.io)
import pegs
echo "[あああ(いいい)]".replacef(peg" '[' {@} '(' {@} ')' ']' ","[$2]($1)")
でいける
612:デフォルトの名無しさん
23/01/04 18:30:34.43 REieKqQf.net
文頭や文中にあるauだけをNGするやつ教えて下さい
613:デフォルトの名無しさん
23/01/04 18:46:40.14 Edm8Og2O.net
docomoはいいのか
614:デフォルトの名無しさん
23/01/04 18:57:17.14 zEB0n1jD.net
唐突に「NGする」って一体何の話だ???
615:デフォルトの名無しさん
23/01/04 18:58:30.08 zEB0n1jD.net
何かを想定しているなら質問に際して最初にそれを伝えるのが常識だろう
616:デフォルトの名無しさん
23/01/06 10:01:53.18 +4FzrtmN.net
>>598
ありがとうございました。
助かりました
617:デフォルトの名無しさん
23/01/06 10:09:25.96 +4FzrtmN.net
>>597
感謝です!
618:デフォルトの名無しさん
23/01/07 13:40:18.10 0HEuBgBZ.net
JaneStyle等の5ちゃん専ブラのNG設定用に、以下の条件を全て満たす書き方を教えてください。
・1行(改行文字無し)
・半角全角で70文字以上100文字
・文中に「、」または「。」を1文字以上含む
619:デフォルトの名無しさん
23/01/07 14:35:34.78 bXxrhZUn.net
>>605
それはここじゃなくて JaneStyleのスレで聞いた方がよくね?
620:デフォルトの名無しさん
23/01/07 17:50:57.40 IdmDw0D4.net
>>602
うるせーな死ねよハゲ
621:デフォルトの名無しさん
23/01/07 19:04:16.19 B7GL4Qwr.net
JaneStyleでの改行は\s<br>\sか?
実際の対象を見ないと分からないけどたとえばアンカーなんかも無いと分かってるなら
^(?=.*[、。])\s[^<]{70,100}\s$
特定の荒らしか何かを想定しているのかな
622:デフォルトの名無しさん
23/01/07 19:42:28.54 Zoa7JGj4.net
アンカータグは当然あるよ
5chならね
623:デフォルトの名無しさん
23/01/13 18:40:39.04 ZqEJpVNq.net
そういうことじゃないんじゃないか
624:デフォルトの名無しさん
23/01/29 18:48:08.66 cz1zZ3tj.net
>>605
そのままchatgpt で聞いてみたよ
以下の正規表現を使用することで、1行 (改行文字無し)、半角全角で70文字以上100文字、文中に「、」または「。」を1文字以上含む条件を全て満たす文字列を抽出することができます。
ruby
Copy code
^(?=.{70,100}$)(?=.*[、。]).*$
この正規表現は、文字列が70文字以上100文字以下であり、文中に「、」または「。」を1文字以上含むことを保証します。
だってさ
625:デフォルトの名無しさん
23/01/29 21:21:58.64 O+Wk/2Eo.net
近頃はみんな
626:デフォルトの名無しさん
23/01/29 22:30:48.24 9ooogxSi.net
薄くなったね
627:デフォルトの名無しさん
23/01/30 01:55:35.57 GlHcGD1J.net
体裁を整える能力はピカイチだが、それが正しいという保証はないからなあ
ちゃんと使うにはまずその分野の知識が必要というジレンマ
628:デフォルトの名無しさん
23/01/30 17:50:26.15 gh9uKCuR.net
正規表現でガチャを回せる投稿サイトを作った話
URLリンク(zenn.dev)
URLリンク(www.regech.app)
629:デフォルトの名無しさん
23/01/30 21:13:06.03 TI/BqHZQ.net
(?!).+
630:デフォルトの名無しさん
23/02/02 00:14:23.96 fPL322j9.net
顔文字に見える正規表現を考えたい
(;*~_~*)
631:デフォルトの名無しさん
23/02/04 22:54:12.69 DlLJLfae.net
2023-02-04という書式の日付のデータがある時
その行で最初に出てきた-を年にしたい
正規表現でなんて書けばいいですか?
632:デフォルトの名無しさん
23/02/04 22:57:04.23 DlLJLfae.net
検索欄に(^.*?)(-)
置換欄に\1年
633:デフォルトの名無しさん
23/02/05 10:48:30.98 KWvYGjBb.net
-(.*) → 年$1
634:デフォルトの名無しさん
23/02/11 16:20:49.02 fAcJ3wf1.net
●Regular Expressionの使用環境
WindowsのJScript
●検索か置換か?
検索
●説明
下記のような文字列があった場合、
[なんとか]から次の[なんとか]が出てくるまでの複数行を取り出したいんだけど、どうする?
自分はコレしか思いつかなかったんだけ
str.match(/^\[.*\][^\[]*/mg);
もっといい方法ある?
●対象データ(これってAviUtlのexoファイルです。
[424.0]
_name=音声ファイル
再生位置=0.00
再生速度=100.0
ループ再生=0
動画ファイルと連携=1
file=D:\PlayMemories\2023-02-09\C0002.MP4
[424.1]
_name=音量フェード
イン=0.00
アウト=3.00
[424.2]
_name=標準再生
音量=50.0
左右=0.0
635:デフォルトの名無しさん
23/02/11 17:02:21.81 yc790R16.net
^\[[^[]*\n(?=\n)
636:デフォルトの名無しさん
23/02/11 17:47:19.77 4bXfwNL9.net
str.split('\n\n')
637:デフォルトの名無しさん
23/02/11 18:25:52.14 G+Atp5X9.net
空行区切りとは限らない場合、ファイル名に[があるかもしれない場合
str.match(/^\[.*(?:\n(?!\[).*)*\n*/gm)
638:デフォルトの名無しさん
23/02/12 00:39:26.16 mse6QHvr.net
>>622-624
できました。すごい。
639:デフォルトの名無しさん
23/02/12 12:08:20.65 2oU17ty6.net
[424.0] は、つまり、
行頭が[ で、行末が] の場合だけを、特別な命令と解釈するのだろ
640:デフォルトの名無しさん
23/02/12 12:34:59.28 PBDCQhni.net
こういうの非包含が使えたらすごい楽
^\[(?~^\[)
641:デフォルトの名無しさん
23/02/12 23:00:31.59 mse6QHvr.net
>>627
正規表現て複雑な入れ子とかの抜き出しもできることは知ってるけど、
その辺の解説書とかページてないのかね。
642:デフォルトの名無しさん
23/02/14 23:50:28.21 dTCCMwFb.net
JavaScriptの正規表現で質問です
ある正規表現に合致し、ある正規表現に合致しない、という正規表現は可能でしょうか?
具体的には
任意数は0も含むものとして
任意数の大文字アルファベットのあとに、任意数の小文字アルファベットが続き、その後任意数の数字が続く文字列のうち
643: 小文字のみ、数字のみの文字列を除外したいです(大文字のみのものは合致させたい) 合致例 ABab01 AAA0 aaa012 ABCDE 合致させたくない例 abcde 012345 000aaa
644:デフォルトの名無しさん
23/02/14 23:57:34.39 XRqDNj0i.net
宿題ですか?
645:デフォルトの名無しさん
23/02/15 00:01:55.99 GMMfGDKP.net
宿題かどうかで正規表現の書き方は変わりませんよね?
646:デフォルトの名無しさん
23/02/15 00:52:40.53 F/CuEgLN.net
できるけど全部正規表現でやらないほうがメンテしやすいぞ
647:デフォルトの名無しさん
23/02/15 00:54:24.40 GMMfGDKP.net
つまりif文で区切るほうが見やすいということですか?
648:デフォルトの名無しさん
23/02/15 08:47:44.60 p2xlcd9z.net
([A-Z]+)?[a-z]+[0-9]+|[A-Z]+([0-9]+)?
649:デフォルトの名無しさん
23/02/15 10:37:15.75 5uY2Ajym.net
>>634
ありがとうございます
素直に足し算の発想でやればよかったんですね
650:デフォルトの名無しさん
23/02/15 12:54:55.60 q8BaXLdM.net
ABab
651:デフォルトの名無しさん
23/02/15 14:01:59.87 N6Rs6EpM.net
([A-Z]+)?[a-z]+[0-9]+|[A-Z]+([a-z]+)?([0-9]+)?
ですかね
652:デフォルトの名無しさん
23/02/15 14:05:43.89 VU7epY9U.net
[A-Z]+[a-z]*[0-9]*|[a-z]+[0-9]+
653:デフォルトの名無しさん
23/02/15 14:13:41.85 6puQI1n1.net
NG例に000aaaがあるということは
000aaaAA
とかもあるわけだよね
そしてこれは順序が違うからマッチさせたダメってことか?
654:デフォルトの名無しさん
23/02/15 14:30:32.69 u5Kc1xOf.net
^(?!$|[a-z]+$|[0-9]+$)[A-Z]*[a-z]*[0-9]*$
655:デフォルトの名無しさん
23/02/16 22:56:05.33 Tpu7Mxzn.net
正規表現で*ではなく0文字以上n文字以下って指定の仕方どうやるんだっけ
*はセキュリティホールになるから使うなみたいなのをどこかで見たので
656:デフォルトの名無しさん
23/02/16 23:01:53.04 Tpu7Mxzn.net
スマンぐぐったらすぐ出てきたわ
ReDoS攻撃というやつだな
正規表現が標準で使える言語でパターンマッチのタイムアウト設定できるやつってあんのかな
657:デフォルトの名無しさん
23/02/22 02:52:40.50 Lq+l8VAY.net
勉強になった
658:デフォルトの名無しさん
23/02/28 19:25:23.88 LpLAZFFY.net
●Regular Expressionの使用環境
秀丸エディタ
●検索か置換か?
置換
●説明
正規表現で加減算したいです
perlの場合これでできるそうです
検索:columnIndex([\d]+)
置換:columnIndex@{[$1+1]}
●対象データ
columnIndex001 = "aaa";
columnIndex002 = "bbb";
columnIndex003 = "ccc";
●希望する結果
columnIndex002 = "aaa";
columnIndex003 = "bbb";
columnIndex004 = "ccc";
659:デフォルトの名無しさん
23/02/28 21:40:28.89 k7F1eRIt.net
perlの置換の式はただのスクリプトとしての演算だからなあ
無理なんじゃね
660:デフォルトの名無しさん
23/02/28 21:52:42.51 3RvLxpuD.net
俺だったらエクセルに貼って分解して計算して足し込んでcsvに出力する
661:デフォルトの名無しさん
23/02/28 22:16:00.68 HPZ5xkxF.net
秀丸にも専用のスクリプト言語的なのなかったっけ?
それ使えばワンチャンあるが素直に汎用のスクリプト言語使った方が楽かも
662:デフォルトの名無しさん
23/02/28 22:25:04.50 LpLAZFFY.net
そうかありがとう
B2&TEXT(C2+1,"000")&D2な感じでエクセルに計算させます
663:デフォルトの名無しさん
23/03/05 15:30:49.38 kbQORjCn.net
chmateの名前欄ng正規表現について
ここの正規表現は拡張正規表現だよね?
ワッチョイ消しあぼーんは(?<!\))$だけど、この中の\って何?
それと\(ス[プ|ッ]+ Sd(5f|bf)の中の\って何?
正規表現なら\は直後のメタ文字打ち消しだけど拡張正規表現においては何を意味するの?
664:デフォルトの名無しさん
23/03/05 16:48:59.22 zxnSBXGX.net
メタ文字消し
|のことならor
665:デフォルトの名無しさん
23/03/05 17:13:11.22 /VGFBid9.net
今まさに書き込もうとしてた。ググったらchmateのNG表記も標準正規表現なんだな
俺が何で拡張正規表現かと勘違いしたかというと、|は標準正規表現では使えないからLinuxなら-Eをオプションに付けて拡張正規表現にする必要があると習ったから
chmateでは|が使えるけどメタ文字打ち消しのバックスラッシュも使うというのはどういう事なの?
666:デフォルトの名無しさん
23/03/05 22:34:50.68 jasgpIrF.net
>>642
rubyの3.2は出来ます。
URLリンク(www.ruby-lang.org)
Regexpのタイムアウトの導入
667:デフォルトの名無しさん
23/03/25 11:22:38.54 YDfCdrWh.net
/~/という書き方のとき以外でスラッシュ/を\エスケープする必要があるケースはありますか?
668:デフォルトの名無しさん
23/04/17 19:32:17.83 5c7uVWzN.net
「0」と「1」からなる文字列のうち、「0」と「1」を同数含む文字列にマッチする
正規表現は存在しません。
正規表現よりも強力な検索方法で↑の文字列にもマッチさせることができるようなソフトは
存在しますか?
669:デフォルトの名無しさん
23/04/17 19:44:56.00 sl+3Awil.net
python
670:デフォルトの名無しさん
23/04/17 20:33:36.29 waI8rtvz.net
つらい
671:デフォルトの名無しさん
23/04/17 21:06:25.43 z5E2eHg0.net
URLリンク(regex101.com)
672:デフォルトの名無しさん
23/04/17 21:29:53.48 W4QVtvW8.net
JavaScriptで書くかな
673:デフォルトの名無しさん
23/04/17 23:02:23.02 HlIFmrYC.net
正規表現よりも「強力な」検索方法ってどう言う事?
それチェックするだけならBASICだって出来るだろうに
674:デフォルトの名無しさん
23/04/17 23:14:49.47 aBS+jUDM.net
あのさあ
>>657を見た後でそんなこと言ってるの?
>>657の末尾に$をつけりゃチェックできるだろうに
675:デフォルトの名無しさん
23/04/18 00:49:04.02 HEwUJcz7.net
URLリンク(regex101.com)
676:デフォルトの名無しさん
23/04/18 01:55:03.99 0xKKyM+T.net
wwなんじゃこの無意味なやつww
677:デフォルトの名無しさん
23/04/18 01:55:30.29 0xKKyM+T.net
全くチェックできてないやんwww
678:デフォルトの名無しさん
23/04/18 03:16:09.61 +QStg837.net
正規表現だけで頑張りすぎる奴はアホ
679:デフォルトの名無しさん
23/04/18 10:37:46.66 1M+dv0CB.net
> 「0」と「1」を同数含む文字列にマッチする
これが部分文字列も含むのなら最初の「0111011110001100000…」のところだけでも
で01, 10とか01111000, 111000, 1100, 0011とか011101111000110000とか
他にもあるけどまあ沢山あるわな
こんなんチェックして何の意味があるのか知らんけど
680:デフォルトの名無しさん
23/04/18 11:53:15.97 mLPBXdJt.net
>>661のは01以外の文字が存在してるのを失念してるので、少しだけ修正
^([^01]|0[^01]*?(?1)*?1|1[^01]*?(?1)*?0)++$
681:デフォルトの名無しさん
23/04/18 11:55:59.03 mLPBXdJt.net
あ、すまん
>「0」と「1」からなる文字列のうち
を忘れてた
682:デフォルトの名無しさん
23/04/18 12:04:05.08 mLPBXdJt.net
おまけに>>666は冗長だったしね
^([^01]|0(?1)*?1|1(?1)*?0)++$
683:デフォルトの名無しさん
23/04/18 12:07:01.90 y8YzUN5p.net
なぜある範囲の文字列を認識できる正規表現が重用されるのでしょうか?
たとえば、文脈自由文法により生成される文字列を認識できるような検索ソフトは
ないのでしょうか?
684:デフォルトの名無しさん
23/04/18 12:19:50.17 VZPIsbzr.net
何故妙な所でわざわざ改行を入れるのでしょうか?
685:デフォルトの名無しさん
23/04/19 15:37:27.88 DhCp7Dkf.net
たとえばHTMLの<title>の直後だけ判定したいときに
マッチしなかったら長いページの最後まで<title>~を探し続けるの無駄だと思うんだけど
<title>のところだけ見終わったら判定打ち切ることってできる?
686:デフォルトの名無しさん
23/04/19 17:20:57.30 WqdbOhNP.net
URLリンク(regex101.com)
687:デフォルトの名無しさん
23/04/19 18:18:09.16 DhCp7Dkf.net
>>672
ありがとう!
688:デフォルトの名無しさん
23/04/19 22:28:52.49 ndERcjBg.net
>>669
計算量が小さいことが数学的に証明されているから
文脈自由文法は計算量が大きい
689:デフォルトの名無しさん
23/05/10 15:31:44.13 7WScgW4R.net
下記の文字列でナンバリングの重複
690:を除去するにはどうすればいいですか? かまいたちの知らんけど #37 #37 「梅沢富美男とドライブ旅!やりたいこと詰め込んだら喜ぶ、知らんけど」 [GAORA] 2023年05月10日.ts 千鳥の相席食堂 #199 #199 藤岡弘、&藤岡真威人の旅! ’田舎出身&ロケマスター芸人’の千鳥がツッ [スカイA] 2023年05月08日.ts ナンバリングが同一かどうかを考慮しなければ下記で可能かなと思うのですが、 (#[0-9]{1,})[\S\s]*(#[0-9]{1,}) ナンバリングが同一である場合に除去するってことは可能なのでしょうか? ※「正規表現は、.NET Framework で提供される正規表現の全ての機能が使えます」ってヘルプにあります
691:デフォルトの名無しさん
23/05/10 15:43:18.27 7WScgW4R.net
[\S\s]* は 改行を考慮してみただけで何でもよかったので、無視してください。
692:デフォルトの名無しさん
23/05/10 15:49:49.18 XkmajJ+H.net
s/(#\d+ )\1/$1/
693:デフォルトの名無しさん
23/05/10 15:56:15.66 yXmZBCRQ.net
#37 #371
694:デフォルトの名無しさん
23/05/10 16:24:45.76 XkmajJ+H.net
>>678
なんか問題ある?
まあ例は基本形であって\1というものがあるということを教えればいいだけだけどね
695:デフォルトの名無しさん
23/05/10 16:34:36.66 KWVZdtYA.net
誤爆しないかチェックしたかったんでしょ
そんな噛み付か無くても良かろうよ
696:デフォルトの名無しさん
23/05/10 16:44:00.86 7WScgW4R.net
>>677
これでいけそうです、ありがとうございます
\1 の働きが 何か分からないんですが、何て言葉で検索すればいいですか?
697:デフォルトの名無しさん
23/05/10 16:52:01.37 7WScgW4R.net
あ、キャプションってやつですかね。
こうなか?
s/(.*)(#\d+ )\2(.*)/$1 $2 $3/
698:デフォルトの名無しさん
23/05/10 16:52:49.70 7WScgW4R.net
こうかな
699:デフォルトの名無しさん
23/05/10 16:57:22.57 XkmajJ+H.net
前後を不定長にするとバックトラックの量が半端じゃなくなるよ
数千倍数万倍それ以上の場合数にあっという間になるので
どれほど爆発的に増えるか考えてみてくれ
700:デフォルトの名無しさん
23/05/10 17:23:53.71 H/PxYykp.net
正規表現はChatGPTと相性いいなぁ
すげー間違ったことも返されるけど検証もさせられるしやテストケースも生成出来て超便利
701:デフォルトの名無しさん
23/05/10 18:11:00.72 XkmajJ+H.net
>>682
悪い
試したらstep数は全然増えなかったね
俺の勘違いか
702:デフォルトの名無しさん
23/05/18 00:59:59.60 GLOCdhwM.net
ハゲとフサの混在からハゲを排除したい
703:デフォルトの名無しさん
23/05/18 09:45:41.67 HWVU1A6n.net
replace(/ハゲ/g, 'ヅラ')
704:デフォルトの名無しさん
23/05/21 18:08:25.80 T9C8dxe0.net
\Kってどうゆうときに使うんですかね?
705:デフォルトの名無しさん
23/05/22 23:09:40.07 lUHZhpO8.net
安心して下さい\Kはいてますよ
$& = はいてますよ
706:デフォルトの名無しさん
23/05/23 15:16:49.72 5w9lz5Mr.net
そちらにはいてますか
707:デフォルトの名無しさん
23/05/27 21:08:35.92 HxAuQBVD.net
特定の文字列が2回以上なければ削除したい
$aa=~s/hoge// if $aa!~/.+hoge.+hoge.+/;
正規表現一発で出来ませんか
708:デフォルトの名無しさん
23/05/27 22:49:21.84 Jh5M5XKC.net
s/\A(?![\s\S]*(砂沙美魔法少女クラブ)[\s\S]*\1)([\s\S]*)\1([\s\S]*)\z/$2$3/
709:デフォルトの名無しさん
23/05/28 06:07:20.35 exFpSO/0.net
s/(hoge.*hoge)|hoge/$1/
s/hoge.*hoge\K|hoge//
s/hoge.*hoge(*SKIP)(*FAIL)|hoge//
s/(hoge)(.*\1\K)?//
URLリンク(regex101.com)
710:デフォルトの名無しさん
23/05/28 10:23:23.66 fg1fsMga.net
s/みさおちゃん(?:.*みさおちゃん(*COMMIT))?//
711:デフォルトの名無しさん
23/05/28 12:43:42.23 yjwdVP6E.net
説明不足でした
$aa=~s/.+hoge.+\n// if $aa!~/hoge.+hoge/s;
これなぜにかダメです
$aa=~s/(hoge.+hoge)|[^\n]+hoge[^\n]+\n/$1/s;
712:デフォルトの名無しさん
23/05/28 14:47:06.90 6Y81pqVN.net
ダメなのは左のhogeより先に右の[^\n]+hogeがマッチを始めるから
左が先になるように右に合わせる
713:デフォルトの名無しさん
23/05/28 15:02:19.22 yjwdVP6E.net
初歩的でしたね、ありがとうございます
714:デフォルトの名無しさん
23/05/31 00:20:37.60 Dm7F+2f1.net
「-」の無い電話番号に「-」を入れるには?
715:デフォルトの名無しさん
23/05/31 07:23:21.12 X455hjkS.net
国際電話とかあると面戸だね
716:デフォルトの名無しさん
23/05/31 08:55:50.76 t6+qFJ/7.net
>>700
携帯番号以外は不可能じゃないかな
717:デフォルトの名無しさん
23/05/31 18:03:07.79 wXMZ1Y1H.net
区切り位置が変わるから全部羅列するしかないね
それも時々更新する必要がある
718:デフォルトの名無しさん
23/06/02 21:23:49.13 XcfIYH3W.net
>>701
誰か頑張れ
URLリンク(www.soumu.go.jp)
719:デフォルトの名無しさん
23/06/03 16:20:02.62 p6l+hu28.net
固定電話
URLリンク(regex101.com)
720:デフォルトの名無しさん
23/06/03 22:05:33.82 vWJZBL5V.net
愛は行動。言葉だけではダメ
721:デフォルトの名無しさん
23/06/04 00:25:20.56 FmV4cjgS.net
もう冷めました
722:デフォルトの名無しさん
23/06/16 20:08:06.56 BLiKvBT9.net
Perl v5.38.0-RC1
723:デフォルトの名無しさん
23/06/18 00:06:22.30 7IbgNtYk.net
NTTと早大、誤った正規表現の文字列抽出を自動で修正する技術を発表
japan.zdnet.com/article/35205348/
perl-5.38.0-RC1 perlre.pod
metacpan.org/release/RJBS/perl-5.38.0-RC1/view/pod/perlre.pod
(鬼車) 不在機能群の入れ子 の動作テスト集
github.com/tonco-miyazawa/regex_etc/blob/master/MEMO_onig/abcent/nesting.txt
724:デフォルトの名無しさん
23/06/18 14:54:23.24 PO9vLDeK.net
>>708
これは色んな意味でおかしい。まず、画像で例示しているURLだがドメインレベルに ? は
使用できない(エラーになる)。正規表現自身もURLということをチェックしていない。最低限、
スキームが https? で始まり、ID=文字列(アルファベット限定)を含む書式の、文字列のみを
抽出するコードを(ここに直接書くとエラーを食らっているので)貼っておく。
URLリンク(pastebin.com)
725:デフォルトの名無しさん
23/06/18 15:04:09.09 PO9vLDeK.net
訂正。>709で貼ったコードは正しく動作するががコメントに(ここに貼った際に試行錯誤した
せいで) ? が抜けていた。趣旨は同じものなので、↓を参照して下さい。
URLリンク(pastebin.com)
726:デフォルトの名無しさん
23/06/18 15:53:25.97 uv5oAAX5.net
>>709
URLの「正しい」ってなんですか
URLリンク(en.wikipedia.org)
URLリンク(datatracker.ietf.org)
727:デフォルトの名無しさん
23/06/18 16:12:09.00 uv5oAAX5.net
「正規表現を用いた文字列抽出の例」図は「誤った正規表現」の例なんじゃないかなあ
例の正規表現では ~.com?fakeID=DEF にもマッチしてしまう
728:デフォルトの名無しさん
23/06/18 16:13:51.73 PO9vLDeK.net
>>711
あなたが示している[1]のsyntax diagram(構文図)[2
729:]にあるように、? はqueryを示す文字で path( / )以前のドメイン名部分には出てこず、最低限 / の後でなければならないはず。 [1] https://en.wikipedia.org/wiki/URL [2] https://upload.wikimedia.org/wikipedia/commons/thumb/d/d6/URI_syntax_diagram.svg/1280px-URI_syntax_diagram.svg.png
730:デフォルトの名無しさん
23/06/19 17:12:20.20 a4eWUm7x.net
>色んな意味でおかしい
同意。本当にこの例をNTTの技術者が作ったの?と思ってしまった。
広報担当の事務員が頑張って作った例だと言われたら納得出来るw
731:デフォルトの名無しさん
23/06/20 13:11:10.13 AvErps2d.net
これは、>>712の人も言ってるように「悪い見本」か、あるいは「プレスリリース用にめっちゃ簡略化した例」のどちらかかと思う
個人的には悪い見本の方かと思う
「?」と「ID」の間のスペースとか気持ち悪いし
732:デフォルトの名無しさん
23/06/21 01:04:22.29 LPKmcd4s.net
メールアドレスは誤ったアドレスを発行して運用してるところがあると対応せにゃ仕方ないけど
URLは誰もアクセスできないだけで終わるんだろうな
733:デフォルトの名無しさん
23/06/21 02:01:06.48 FL3bkV8O.net
質問
ある文字列の中に、4桁の数字が出た場合、文字列を区切るという目的で正規表現を使いたいです
let hoge="....";
hoge.split(/\d{4}/)
しかし上記の正規表現だと、例えば6桁の数字でも区切ってしまうため、これを4桁に限定するためにはどうしたらよいでしょうか?
734:デフォルトの名無しさん
23/06/21 02:36:29.87 HRXsYHZK.net
(?<!\d)\d{4}(?!\d)
735:デフォルトの名無しさん
23/06/21 06:20:04.42 FL3bkV8O.net
ありがとうございます
736:デフォルトの名無しさん
23/06/21 07:00:29.04 8S43aXN3.net
修正前 .*(..)?
修正後 .*?(.[^z])?
"abcd"を与えて受理される文字列
修正前 ""
修正後 "ab"
受理してもらいたかった文字列 "cd"
URLからIDを取り出すほうは画像に入るようにデフォルメする必要があるから
おかしいURLになるのはやむを得ないと思う
> (?:[&].*)?
ただこれはちょっと気持ち悪い
これがあっても無くても結果は変わらないから付ける必要なかった
正規表現に詳しい人が"&"を単体で文字クラスに入れることはあまりない(たまにはいる)
新技術のアプリを実際に試させてくれないかな?
提供してもらえれば無償でテストするよ
737:デフォルトの名無しさん
23/06/21 07:17:00.34 Z+I+bAqU.net
「abczは拒否」→「なるほど末尾zは拒否だな」
えー…
738:デフォルトの名無しさん
23/06/21 07:38:48.98 SbeXWTV7.net
書いてないけど前提として完全一致のつもりだったんだろうな
739:デフォルトの名無しさん
23/06/21 10:41:38.55 8S43aXN3.net
jsって完全一致が前提になるオプションってある?
それがあったとしても .*?(.[^z])? はAutoだが
740:デフォルトの名無しさん
23/06/21 11:16:26.32 ld9dVlA3.net
>>723
シングルラインモード(dotAll)で ^ と $ を使えば良いだけでは?
741:デフォルトの名無しさん
23/06/21 12:14:35.15 8S43aXN3.net
^と$を使うつもりなら画像の中でも使うと思う
見やすくするために省いてるだけなのかな?
そうだとしても .*?(.[^z])? はAutoだが
742:デフォルトの名無しさん
23/06/21 22:34:06.87 g2ig9yOY.net
ニュー速(嫌儲)で、近頃半角記号を6文字だけとかの書き込みがあります
なんとかNGを作りたいのですがうまく行きません
行頭から記号だけの文字列で4~8文字、って想定でこんなの作ってみたんですが、httpで始まるurlも引っかけてしまいます
^[ -/:-@\[-~]{4,8}
例えばこんなスレなんですが
スレリンク(poverty板)
詳しい方、正規表現作ってもらえないでしょうか?
743:デフォルトの名無しさん
23/06/22 09:30:57.52 nJDgsm3N.net
そういうのは専ブラのNGスレでやるべきだね、ユーザー同士で情報共有にもなるから
正規表現を適用する対象がHTMLでなくdatだったりでユーザーでないと作れない場合もある
記号だけにマッチさせたいなら[!-/:-@\[-`{-~]だが、この前後に付ける正規表現は
お使いの専ブラスレで聞いてくれ
744:デフォルトの名無しさん
23/06/22 09:42:44.65 TTIYA8nl.net
そこみる限りでは3パターンしかなくない?
何かしらの絵文字とかが化けて出てるだけとか。
(\$\@\:\^\()|(\_\]\#\)\&\$\}\>)|(\!\^\*\%\&\$\:\~)
745:デフォルトの名無しさん
23/06/22 10:08:56.55 L6AKAbfA.net
726です
726のこれはうまく動かない、と書いたのは、文字間にスペース入ってました
727さんのに変えたら誤動作無く動作しました
^[!-/:-@\[-`{-~]{5,11}
ちなみに、android板に以下のスレを発見しました
しかし、荒らされてて機能して無さそう
他にこっちの方が良いよ、っておすすめのスレはありますかね?
オススメのNGワード
スレリンク(android板)
746:デフォルトの名無しさん
23/06/22 10:55:55.92 nJDgsm3N.net
こちらはそちらが何を使ってるかも分からないので勧めようが無い件
問題は正規表現の後ろに付けるほうなんだけど何を使ってるかで変わると思う
今のままでは12文字以上記号が続いててもNGになっちゃうね
747:デフォルトの名無しさん
23/06/22 13:11:08.52 L6AKAbfA.net
>>730
chmateなんです
その後、2文字だけのにも対応するためこうなりました。言われた通り後ろ側も条件付けました
^[!-/:-@\[-`{-~]{2,11}$
ここがひどいです
スレリンク(poverty板)
748:デフォルトの名無しさん
23/06/22 14:46:12.28 vRMLRvgd.net
方言がひどい記述だけど(PCRE2とbregonig.dllでは大丈夫)
^ ?(((?!&gt;?|&lt;?)[[:punct:]])+|&gt;?|&lt;?){2,} ?$
749:デフォルトの名無しさん
23/06/22 14:53:40.61 vRMLRvgd.net
>>732
はdatに対してのものだから、mateはどうなのかは知らん
POSIX文字クラスが通っても、>とか行頭行末の半角スペースとか無さそうだね
750:デフォルトの名無しさん
23/06/22 23:53:09.33 nJDgsm3N.net
GJ
[[:punct:]] これいいね、覚えとこ
(()+){2,}は繰り返しが二重になっててReDosを狙われる懸念があるから
++や(?>)を使ったほうがいいかも
正規表現エンジンの内部でも対策はしてると思うけど念のために
751:デフォルトの名無しさん
23/06/23 01:33:06.45 gmkpJif8.net
>>734
+が入ってるのはダメじゃん
除いてくれ
作ってる途中で紛れ込んだものだね
なおbregonig.dllだと
^ ?(?:\p{punct}|&gt;?|&lt;?){4,} ?$
^ ?(?:[[:punct:]]|&gt;?|&lt;?){4,} ?$
でもいけちゃうんだよな
ちょっと不思議
752:デフォルトの名無しさん
23/06/23 02:02:21.28 qwakAXsj.net
and検索みたいなのってできない?
今まで[ABC]と[あいう]は2回に分けて検索してたけど1回で済ませたい
753:デフォルトの名無しさん
23/06/23 02:09:08.88 gmkpJif8.net
>>736
^(?=.*?ABC)(?=.*?あいう)(?=.*?甲乙丙)
754:デフォルトの名無しさん
23/06/23 02:35:28.92 qwakAXsj.net
>>737
感謝
755:デフォルトの名無しさん
23/06/23 12:02:08.17 2Ntzjt3B.net
[文章]
AAAaiueo111 xxx
aaaaa
AAAkakikukeko xxx
b b b
AAAsasisuseso
ccccc
AAAtatituteto000
ddd123
上記の文章で先頭がAAAの行だけ抜き出して、さらに
756:AAAを削除して末尾にxxxがある場合はxxxも削除する正規表現を考えています。 使用するのはサクラエディタの置換機能で、 置換前 AAA(.*)\r |.*\r\n 置換後 $1 で実行するとAAAの行だけ抜き出してAAAも削除出来ましたがxxxが残ります。2回に分けて置換すればいいのですが、面倒なので1回でxxxまで削除する方法があれば教えてください。
757:デフォルトの名無しさん
23/06/23 13:06:42.48 gnUd2/2c.net
AAAで始まらない1行|先頭のAAA|末尾のxxx
758:デフォルトの名無しさん
23/06/23 13:54:57.82 WBrlaKRC.net
^AAA|xxx$|^.*\r\n → 削除
759:デフォルトの名無しさん
23/06/23 15:20:23.65 2Ntzjt3B.net
>>740
>>741
ありがとうございます。
760:デフォルトの名無しさん
23/06/23 19:05:48.89 zWmLGOhD.net
^AAA([^\r\n]*?)(?:xxx)?$|^[^\r\n]*(?:\r\n|[\r\n])?
$1
アク菌で書けませんぞテスト
761:734
23/06/23 19:21:25.94 zWmLGOhD.net
>>735
PCRE2では\p{Punct}は存在しないんだね
www.pcre.org/current/doc/html/pcre2syntax.html
[\p{P}\p{S}]で代用になりそう、全角文字にもマッチするけど
プロパティがこれだけいろいろあると全部を把握するだけでも大変だなぁ
> +
言われてみれば+があるのはおかしいw 忘れ物だったのかw
762:デフォルトの名無しさん
23/06/23 21:34:05.58 gmkpJif8.net
>>744
不思議な点は
PCRE2だと、[[:punct:]]で&が先にキャッチされて&gt;のgt;が取り残されてしまうので
|&gt;とあってもマッチしなくなる
bregonig.dllだと
&gt;にキャッチされてマッチする(punctより&gt;が優先される
(PCRE2は最短マッチが優先されて、bregonigは最長マッチが優先なのか?)
これはorの記述の順序には関係なく左に(先に)&gt;を書いても結果は同じ
763:デフォルトの名無しさん
23/06/23 22:07:00.56 zWmLGOhD.net
ここのテストサイトで regex101.com/
^([[:punct:]]|>|<)$ を < にマッチさせたら成功したけど
本物のPCRE2ではマッチしないの?余計な半角スペースが入ってたりしない?
それで>>732に要らないはずの先読みを入れてたんだね
これがマッチしないならバグかも知れない
もしまたゴミとかのうっかりミスが原因だったとしても気にしないでね、俺もよくやらかすから
764:デフォルトの名無しさん
23/06/23 22:09:21.21 zWmLGOhD.net
あ、&が化けちゃった
^([[:punct:]]|>|<)$ を > にマッチさせて
765:デフォルトの名無しさん
23/06/23 22:31:35.63 gmkpJif8.net
>>746
今確認したらそのとおりだった
俺は以前一体何をやったんだろう?
766:デフォルトの名無しさん
23/06/23 22:36:28.09 gmkpJif8.net
今考え付くのは
^(?>[[:punct:]]|&gt;)+
とか
&gt;のみ書いといて&lt;に引っ掛かったとかとかかなあ?
767:デフォルトの名無しさん
23/06/23 22:47:37.55 gmkpJif8.net
さすがに(?>)を使って気づかないわけないから(使った覚えもないし)
恥ずかしいけど、gt;とlt;の取り違えをやらかした気がする
768:デフォルトの名無しさん
23/06/23 23:16:11.04 zWmLGOhD.net
そういうこと俺もあるから分かるわーw
頭が回ってないときに動作確認するとしっかり確認出来てないのに確認したつもりに
なってしまうんだよなぁ、だから休憩と二重三重の確認はめちゃ大事
間違えた原因は分からないけどとりあえずゆっくり休んでくれw
769:デフォルトの名無しさん
23/06/24 00:27:07.24 X4q59utv.net
勘違いした理由が分かった
^([[:punct:]]|&gt;)+
これをやると&で切れちゃうんだ
s/([[:punct:]]|&gt;)+//g
をやるとgtが置換されずに残る
末尾に$とか目標物を付ければ切れないんだが
さてどうして切れるのか誰か教えて
770:デフォルトの名無しさん
23/06/24 00:36:09.10 X4q59utv.net
やっぱ左側が優先なのか
(&gt;|[[:punct:]])
と入れ替えたら切れない
771:デフォルトの名無しさん
23/06/24 09:56:18.97 o3ZfF1Sp.net
>>742 >>741
それだと行頭からxxxだけしかない行の改行が削除できずに残りそうだけどどうだろう
^AAA|^.*\r\n|xxx$ → 削除
772:751
23/06/24 11:05:23.89 QPqcCtG1.net
>やっぱ左側が優先なのか
正解
ただ、同じ正規表現で&;gt;にマッチする環境もあるよ
考えられる中で最長になるマッチを探すエンジン
バックトラックの動きがまだよく分かってないなら>>708のNTTと早大の正規表現や
>>743で使ってる .* と .*? の動きも見直しておいたほうがいいかも
見た目は簡単そうに見えるけど正しくバックトラックの動きを理解してないと作れない
舐めてかかると酷い目に遭う怖いヤツだよ(過去に経験あり)
773:デフォルトの名無しさん
23/06/24 11:10:05.28 QPqcCtG1.net
あ、NTTと早大のやつは正規表現を^と$で囲ってから動かして
774:デフォルトの名無しさん
23/06/24 11:21:09.38 X4q59utv.net
>>755
いままで
+や++での強欲のバックトラックが最長を探すのに違いがあるとは思っていなかったよ
最大の最長を探す記述ってのも欲しいな
775:デフォルトの名無しさん
23/06/24 16:54:14.04 QPqcCtG1.net
>最大の最長を探す記述
ちょっと探してみたらPHPのオプションにあった
www.php.net/manual/ja/function.mb-regex-set-options.php
> l 最も長くマッチするものを探す
この処理ってすごく重くなりそうなイメージがあったけどそうでもないのかな
776:デフォルトの名無しさん
23/06/24 17:35:54.33 X4q59utv.net
PHPだけじゃなあ
結局、事故らない為には長さの違うダブリは取り除いておくほうが無難ってことか
777:743
23/06/25 11:57:31.39 YeZqv3UB.net
>> 759
考えてみると長いほうを前にしても短いほうがマッチ出来なくて詰むケースがあるのか
正規表現むずかしい
>> 740 741 754
改行コードがLFやCRのみの場合に対応してない
最後の行がAAAで始まらない場合、行末の改行が無い場合に削除されない
743は両方に対応しているけど740の発想のほうがシンプルで優れてるね
あとサクラエディタでは\Rが使えるので使ったほうが簡単に書けそう
778:デフォルトの名無しさん
23/06/27 21:16:47.75 TnfGmDZI.net
最長一致マッチが有効のとき、下の正規表現は何にマッチすべき?
"abcd" =~ /abc\Kd|abc/;
\Kの前を文字列長に含めるべきか否かを考えて下さい
779:デフォルトの名無しさん
23/06/28 12:49:16.44 vk3PbjZ1.net
元より最左ルールに基づいてdよりabcにマッチすべきとはならんやろ
780:761
23/06/28 13:05:55.77 m0cBggZC.net
>>762
ありがとうございます、それは正しい意見だと思います
\Kの前を文字列長に含めるべきかどうかについてはどうお考えですか?
今後の参考にしたいと考えております
781:デフォルトの名無しさん
23/06/29 11:57:49.56 0JMnG4u5.net
最長一致する正規表現が有効の場合
1、「abc」「あ」
2、「て゛」「で」
A. 前が長い
B. 同じ長さ
C. 後ろが長い
782:デフォルトの名無しさん
23/07/02 20:25:06.40 /BVUs+ug.net
奥が深すぎる
783:デフォルトの名無しさん
23/07/06 13:17:43.04 GbtWdAMV.net
twitter.com/k_takata/status/1676247372731662336
>正規表現技術入門が第2刷増刷
おめでとうございます
bregonig.dllやonigmoにはいつもお世話になってます
vimは知りませんw
784:デフォルトの名無しさん
23/07/06 17:43:12.24 SQbV6Whm.net
JaneStyleであぼーんにつかいたいのですが、
アウアウウー Sa47-runv [106.131.26.222]
47
runv
131.26.222
この3つが変わる場合の正規表現ってどうかいたらよいでしょうか?
785:デフォルトの名無しさん
23/07/06 20:37:36.61 GbtWdAMV.net
Jane Styleの仕様が分からないけどこれでいける?
(?i)アウアウウー\s*Sa[a-z\d]{2}-[a-z\d]{4}\s*\[106\.\d{1,3}\.\d{1,3}\.\d{1,3}\]
786:デフォルトの名無しさん
23/07/06 21:30:05.44 7Yxy824T.net
>>768
ありがとうございます!
ためしてみたけれど駄目でした。
細かく分析して応用してみます!!
787:デフォルトの名無しさん
23/07/06 21:54:51.51 7Yxy824T.net
>>768
失礼しました。勘違いをしていて、正しく設定したらこれでいけました!!
大感謝です!&正規表現の勉強になりました!!
リファレンスみてなるほどとうなっています
788:デフォルトの名無しさん
23/07/06 21:55:53.42 gWNyo9yQ.net
いやそれでいけるでしょ
(?i)はデフォなので要らないけど
ダメなら設定の仕方が悪いか、既に表示されているものにNGを設定したんで
設定前の表示が表示されたままで再描画をやってないのでNGが表示に反映されてないかのどっちか
789:デフォルトの名無しさん
23/07/06 22:11:26.50 GbtWdAMV.net
動いて良かった、正規表現の勉強頑張れーw
771さんもありがとう
790:デフォルトの名無しさん
23/07/06 22:11:33.07 4RAXuAwI.net
ちなみにワッチョイの下4桁、runvの部分は大文字もありうるから
その正規表現すり抜けするかも
791:デフォルトの名無しさん
23/07/06 22:16:17.63 gWNyo9yQ.net
(?i)が付いてるし、なくてもそれがデフォだから大丈夫だよ
792:デフォルトの名無しさん
23/07/06 22:21:43.88 7Yxy824T.net
>>773
(?i)アウアウウー\s*Sa[0-9A-Za-z\d]{2}-[0-9A-Za-z\d]{4}\s*\[106\.\d{1,3}\.\d{1,3}\.\d{1,3}\]
一応、ご指摘通り改良しておきました!
793:デフォルトの名無しさん
23/07/07 00:41:55.61 adSx9MnJ.net
反対に(?i)ではSaの他にsAにもマッチしてしまうのでは?
(?-i)アウアウウー Sa..-.... \[106\.
これで誤爆する実例があるなら教えてほしい
794:デフォルトの名無しさん
23/07/07 13:06:44.76 xew4KSRK.net
言い方があれだけど、丁寧に書いたかどうかの差なのでどっちでも機能すると思う
795:デフォルトの名無しさん
23/07/07 23:28:01.04 chPidFQv.net
鬼車で(?L)と\g<0>が共存出来ないようだけど
"\g<0>が正規表現全体を取り込むときに(?L)だけを取り込まないようにする"
という修正案で何か問題が起こるか分かる人いません?
例えば (?Lix)abc\g<0> だったら\g<0>の中身が (?ix)abc\g<0> になるようにすれば
共存可能になるんだけど副作用が出るのか分からない
鬼車公式) 全体オプション
github.com/kkos/oniguruma/blob/41a3b802af2155eef6d648aa3608e39605110642/doc/RE.ja#L288
LだけじゃなくCとIも共存不可でした
796:デフォルトの名無しさん
23/07/09 12:38:44.00 dnLGUnq0.net
>>778
"\g<0>" に取り込むときにはそのまま全て取り入れ、取り出すときに
"L" や "C" や "I" を取り除く方法もあるのでは?
797:デフォルトの名無しさん
23/07/09 15:02:36.24 NT/2XwNR.net
最長マッチ(?L)を知らなかったんだけど何か思ってたのと全然違った
DFA的な最長だと思ってたのに
798:デフォルトの名無しさん
23/07/09 17:56:55.84 dnLGUnq0.net
最左じゃなくても良いみたい
UTF-8のとき
abc < abc\Kd
ab < あ
で < て゛
"(?C)a(b|\g<0>)c" がエラーになるのはモヤっとする
"(?C)" が捕獲無効にするから "\g<1>" は使えないし
799:デフォルトの名無しさん
23/07/10 13:05:06.30 8apozFwM.net
> ab < あ
マルチバイト文字を含む文字列に対して (?L) は使いにくいな
文字単位での長さで比較するようにするのは重くなる上に難易度高そう
800:デフォルトの名無しさん
23/07/10 20:06:05.30 8apozFwM.net
JaneStyleが5ch.netのサポートを終了
この前NG登録出来て喜んでた人かわいそす
801:デフォルトの名無しさん
23/07/11 10:50:26.27 6DaZenCz.net
(?L)をマルチ文字対応にするのは無理だけど
>"(?C)a(b|\g<0>)c" がエラーになる
これを使えるように出来る人はいるんじゃないかな
夏休みで暇を持て余している大学生の皆さん、Let's try!
802:デフォルトの名無しさん
23/07/13 19:11:50.96 7AgmN8D3.net
JAPANを日本、NIPPONをニッポンに、同時に置き換える
JAPAN|NIPPON
↓
日本|ニッポン
803:デフォルトの名無しさん
23/07/13 23:55:44.94 OlRmyaph.net
>>785
サクラエディタ+bregonig.dllでは無理っす
804:デフォルトの名無しさん
23/07/14 00:50:54.69 JHf9vJmP.net
URLリンク(www.regular-expressions.info)
URLリンク(npp-user-manual.org)
805:デフォルトの名無しさん
23/07/14 13:30:40.79 lxqistQI.net
わしは鬼車のscan.cをいじって好きに置換出来るようにしたぞ。ファイルからhtmlソースを読み込んで繰り返し検索・置換して結果を別ファイルに出力するようにしとる。便利なのだが使う機会は滅多にない。日常の置換はほぼ秀丸で事足りる。
806:デフォルトの名無しさん
23/07/15 18:19:44.01 nnNpViq+.net
JavaScriptですが「0を含めない正の半角数値のみ」というのは、どう書けばいいのでしょうか?
807:デフォルトの名無しさん
23/07/15 18:22:35.95 nnNpViq+.net
0を含めないというのは「0より大きい正の半角数値のみ」という意味です
808:デフォルトの名無しさん
23/07/15 18:39:49.26 Fs/aULCy.net
正規表現でやることじゃない
809:デフォルトの名無しさん
23/07/15 18:47:36.28 vGns6WZO.net
(?!(?!<[0-9])0(?![0^9]))[0-9]+
00とかあるんだったらダメだけど
810:デフォルトの名無しさん
23/07/15 18:47:49.29 hche+KD8.net
>>789
XY問題の臭いがする
その文字列を、正規表現「だけ」を使って評価したい理由でもあるの?
811:デフォルトの名無しさん
23/07/15 19:54:00.17 nnNpViq+.net
>>793
全角文字と半角英字を除外したいんですよ
入力欄にこれらを入力されるとフリーズします
812:デフォルトの名無しさん
23/07/15 20:24:42.65 hche+KD8.net
>>794
「正規表現だけで評価したい理由」になってない
許可したい文字種が「0から9までの数字」ってことで良いのなら、下記で済ませるのが妥当(符号・少数点・セパレータを含んでいたり、16進表記、指数表記、インド数字、などの表現は不許可)
const isValid = Number(inputString) && /^[0-9]+$/.test(inputString);
813:デフォルトの名無しさん
23/07/15 21:27:34.96 nnNpViq+.net
すみません
説明の仕方が悪かったです
「正の実数(少数も含む)」でした
0も含ませることにしました
それでこうしました
^(0|[1-9][0-9]*)(|[.][0-9]+)$
814:デフォルトの名無しさん
23/07/15 21:44:37.74 Ip1+AB5X.net
そして半年後…
「誰だよこんなクソプログラム書いたやつ💢」
815:デフォルトの名無しさん
23/07/15 21:52:20.50 G+tF3yG6.net
滅茶苦茶わかりみ
美しくないプログラムはパッと見てうんざりする
816:デフォルトの名無しさん
23/07/17 02:00:45.07 MFjOLYv6.net
改行厨たいさく
[^\n]+([\n\r\s]{2,})[^\n]+([\n\r\s]{2,})[^\n]+([\n\r\s]{2,})[^\n]+
817:デフォルトの名無しさん
23/07/20 17:25:16.42 OqTU1F4P.net
>>785
そういうの出来るといいですけどねえ
818:デフォルトの名無しさん
23/07/21 15:55:34.48 GwV7ay2N.net
>>784
C言語で文字列から部分文字列を取り出す関数をググったら「そんなのねーよ、自作しろ」だった
C言語をちゃんと勉強しないと無理だな
819:デフォルトの名無しさん
23/07/23 00:50:40.93 hdFkAV/t.net
hage【ZEN123】hoge456789
上記の【】内の全角英数字だけを半角にする
正規表現では無理なパターンの例か
820:デフォルトの名無しさん
23/07/23 05:19:55.24 BnGP1dsy.net
正規表現ライブラリを使う側のアプリに変換関数を実装すれば可能になるので
そういう正規表現環境は既に存在してるかも?
今のテキストエディタでもマクロでなら出来るものがありそう
821:デフォルトの名無しさん
23/07/23 09:48:00.20 PHWyKwrY.net
秀丸のようにマクロ使わずに検索→変換できるエディタもあるしね
822:デフォルトの名無しさん
23/07/23 13:07:11.02 BnGP1dsy.net
秀丸と言えば鬼車を秀丸で使えるようにしようとしてる方がいるから
お願いすれば 全角->半角変換 や >>785 の置換に対応してもらえるかも?
本家の最新の鬼車の秀丸エディタからの利用方法
www2.maruo.co.jp/hidesoft/2/x39752_.html
823:デフォルトの名無しさん
23/07/23 15:10:19.87 nlZnqujR.net
>>805
それは、一時期そこら中で暴れていた「触れてはいけない人」のヤツだねw
824:デフォルトの名無しさん
23/07/23 16:14:08.28 BnGP1dsy.net
その点は賛否あるだろうけど技術力もモチベも高そうな方だから期待してる
825:デフォルトの名無しさん
23/07/24 12:53:06.11 LBGWnldn.net
> 全角->半角変換 や >>785 の置換に対応
正規表現の中での表記はどういう仕様にするのがベストなのかな?
新しい予約語(?)の予感
826:デフォルトの名無しさん
23/07/25 00:28:01.42 ijwgoKNu.net
「正規表現には方言がある」
エディターを乗り換えた時に初めて気付かされたな
827:デフォルトの名無しさん
23/07/25 01:58:51.32 DaPN/KaH.net
\1(sed系)なのか、$1(perl系)なのかは、最初はいつも逆をやってしまう
828:デフォルトの名無しさん
23/07/25 02:10:59.59 m8SWwEXi.net
\1ってあちこちにあるものだったのか
EmEditorってエディタがそれでなんだこれって思ってた
829:デフォルトの名無しさん
23/07/25 16:23:19.14 hmH9EM9U.net
Onigumoで検索して気持ち悪くなる定期
830:デフォルトの名無しさん
23/07/29 20:32:41.26 xNvNUPTs.net
詳説正規表現の1章だけとりあえず読み終えたけど正規表現の使いどころがわからない
正規表現の便利な使い方教えて!
831:デフォルトの名無しさん
23/07/29 21:44:23.17 slvWQQxm.net
>>813
^(?=.*正規表現)(?=.*教えて)
832:デフォルトの名無しさん
23/07/29 21:46:27.76 slvWQQxm.net
>>813
途中で送信しちゃった
↓を専ブラのNGwordに入れて正規表現にチェックしてみ
^(?=.*正規表現)(?=.*教えて).*$
833:デフォルトの名無しさん
23/07/29 21:49:39.05 slvWQQxm.net
>>813
すまん間違えてたこれ
(?s:(?=.*正規表現)(?=.*教えて)).*$
834:デフォルトの名無しさん
23/07/29 21:51:07.45 Z2bzRt4C.net
俺のレス消えちゃうんじゃない?
?=がよくわからないけど後で調べとくよ
835:デフォルトの名無しさん
23/07/30 10:33:11.68 3uyXLeeN.net
テキストエディタで置換を行うときに「正規表現」と「選択範囲」をオン
検索: ^
置換: #
選択範囲の全ての行をコメントアウト出来て便利
--------------------------------------------------------
検索: [ \t]+$
置換: (なし)
行末の余計なスペースを削除出来て便利
836:デフォルトの名無しさん
23/08/12 18:48:03.89 g9Iw6FTW.net
URLリンク(hoge.com) URLリンク(fuga.net) URLリンク(moga.com)
の用に1行に複数URLがスペース区切りで記載されているものを、それぞれ単独で抜き出したいです。
https?://(?:[!-~]+.)+[!-~]+
だと最長一致になってしまうようで、1行丸ごと対象になってしまます
最短一致出来ればいいと思うのですが、どう正規表現を弄ればいいか教えてください。
837:デフォルトの名無しさん
23/08/12 18:56:16.40 IKZkjZuG.net
http[^\s]+
838:デフォルトの名無しさん
23/08/12 19:02:22.92 BmgakVsI.net
>>819
.をエスケープ
839:デフォルトの名無しさん
23/08/12 19:14:06.14 g9Iw6FTW.net
>>820
>>821
うぉぉ、ありがとうございました!
840:デフォルトの名無しさん
23/08/13 14:38:57.47 vv6Q6LsS.net
突然大きな声で叫ぶな
841:デフォルトの名無しさん
23/08/20 13:26:03.91 tG3c9Vi+.net
perl 正規表現で一発変換できませんか
"aaa \"bbb\" \"ccc\" ddd" # これを以下にしたい
aaa "bbb" "ccc" ddd
842:デフォルトの名無しさん
23/08/20 13:58:40.55 vZ93TkLb.net
正規表現で
my $s = '"aaa \"bbb\" \"ccc\" ddd"';
$s =~ s/(.*)/eval $s/e;
正規表現を使わずに
my $x = eval '"aaa \"bbb\" \"ccc\" ddd"';
843:デフォルトの名無しさん
23/08/20 14:00:17.67 vZ93TkLb.net
>>825
$s =~ s/(.*)/eval $s/e;
↓
$s =~ s/(.*)/eval $1/e;
844:0824
23/08/20 20:08:57.65 tG3c9Vi+.net
文字列をevalで再度評価させる
ありがとうございます、勉強になります
ただ文字列にシングルクォートはありません
文字列に2つのパターンがあります
hogehoge "aaa bbb ccc ddd"
hogehoge "aaa \"bbb \"ccc ddd"
s/hogehoge\s+"(.+)".*\n/$1/; # で弾いて
tr/\\//d; # 2回処理しています
845:デフォルトの名無しさん
23/08/20 20:26:08.36 vZ93TkLb.net
単純に
s/\\//g
でええんとちゃうん
846:0824
23/08/20 20:59:59.16 tG3c9Vi+.net
>>828
2回処理するのでindexで調べてtr使った方が早いでしょ
hogehoge "aaa bbb ccc ddd"
hogehoge "eee \"fff\" \"ggg\" hhh"
目的文字列
aaa bbb ccc ddd
eee "fff" "ggg" hhh
847:デフォルトの名無しさん
23/08/20 21:32:41.19 vZ93TkLb.net
一発変換したいんじゃないの?
s/hogehoge\s+(.+)/eval $1/e
848:0824
23/08/20 21:58:11.37 tG3c9Vi+.net
>>830
ありがとうございます
s/hogehoge\s+"(.+)".*\n/$1/;
これで弾いてるの"以後にコメントがあるかもしれないからです
849:デフォルトの名無しさん
23/08/21 20:43:15.01 Lyi1TDoI.net
eval思い付く人すごい、甲子園優勝
850:デフォルトの名無しさん
23/08/21 23:39:46.20 Frb3PbHb.net
>>824
これはUnix名前空間の全引数を" "で括ったものをほどくだけに見えるので、例えばLinux上では
文字列変換ではなく、printfコマンドを通せば一発だが。
$ printf '%s' "aaa \"bbb\" \"ccc\" ddd"
# aaa "bbb" "ccc" ddd
851:デフォルトの名無しさん
23/08/21 23:52:08.69 Frb3PbHb.net
見落としてたので補足しておくと、>>831のコメントの件もUnixの書式に則ったものなら大丈夫。
$ printf '%s' "aaa \"bbb\" \"ccc\" ddd" # ←のようにコメントがあっても、↓になる
# aaa "bbb" "ccc" ddd
852:デフォルトの名無しさん
23/08/22 01:30:15.60 RW2iO7Jr.net
>>perl 正規表現で一発変換できませんか
まあ参考にはなるけど質問の条件無視してドヤ顔で語られてもねえ‥
853:デフォルトの名無しさん
23/08/22 02:16:49.08 NJ9SPgik.net
>>833
単にシェルが引数処理してるだけじゃん
これで十分だろ
echo "aaa \"bbb\" \"ccc\" ddd" #
854:デフォルトの名無しさん
23/08/22 12:38:02.82 NJ9SPgik.net
>>831
(perlの)コメントがあっても動作するよ
855:0824
23/08/23 09:58:00.37 yShv/GWA.net
>>837
ありがとうございます、勘違いしてました
eval評価だからコメントあっても行けますね
856:デフォルトの名無しさん
23/09/02 20:40:48.54 PozNjemk.net
●Regular Expressionの使用環境
Lua
●検索か置換か?
検索
●説明
IPアドレス部分だけ抽出したいです
各セグメントが1-255の範囲内かどうかのチェックは無くてもOKです
※対象データの内xは文字としてのアルファベットのxです
\r\nは改行コードです
よろしく�
857:ィ願いします ●対象データ x\r\n192.168.10.1\r\n0\r\n\r\n ●希望する結果 192.168.10.1
858:デフォルトの名無しさん
23/09/02 22:43:12.64 JbZUXP6Y.net
(%d+%.%d+%.%d+%.%d+)
859:839
23/09/03 01:48:07.24 BSGxD5eG.net
ありがとうございました
860:デフォルトの名無しさん
23/09/03 01:50:43.78 BSGxD5eG.net
●Regular Expressionの使用環境
Lua
●検索か置換か?
検索
●説明
コロンとスペースの右側の数字だけ抽出したいです
よろしくお願いします
●対象データ
abe-gkm: 12
●希望する結果
12
861:デフォルトの名無しさん
23/09/03 06:04:52.16 ldBVlws1.net
自分で覚える気は一切ないんですね
862:デフォルトの名無しさん
23/09/03 14:44:19.10 QHfhMJE9.net
LUA5.1リファレンスマニュアル 文字列操作
URLリンク(milkpot.sakura.ne.jp)
863:デフォルトの名無しさん
23/09/03 17:01:33.87 7kfz6vsc.net
訂正がありました
よろしくお願いします
●Regular Expressionの使用環境
Lua
●検索か置換か?
検索
●説明
最後に現れるコロンの右側だけ抽出したいです
●対象データ
ab:e-gkm: 12
●希望する結果
12
864:デフォルトの名無しさん
23/09/03 17:20:26.33 ruPOb/mk.net
訂正がありました
よろしくお願いします
●Regular Expressionの使用環境
Lua
●検索か置換か?
検索
●説明
最後に現れるコロンの右側だけ抽出したいです
●対象データ
ab:e-gkm: ::12
●希望する結果
12
865:845 ◆06.HT2D93O4J
23/09/03 17:22:38.45 7kfz6vsc.net
>>846は別の人なのでトリップを付けておきます
よろしくお願いします
866:デフォルトの名無しさん
23/09/03 17:42:25.87 ruPOb/mk.net
訂正がありました
よろしくお願いします
●Regular Expressionの使用環境
Lua
●検索か置換か?
検索
●説明
最後に現れるコロンの右側だけ抽出したいです
●対象データ
ab:e-gkm: 121212
●希望する結果
12
867:デフォルトの名無しさん
23/09/04 00:12:22.18 SsZQexqW.net
>>843-844
>>846-848
夏休みキッズ達よ、答えられないor嫌なら見なければいい
>>845
[^: ]*$
868:デフォルトの名無しさん
23/09/04 13:01:20.01 c5K3sEzk.net
Excelの文字を取り出すLEFT関数、RIGHT関数、MID関数
正規表現でも相当がんばれば再現できなくはないけれど、努力に見合った意味が見つからない
869:デフォルトの名無しさん
23/09/04 13:08:00.64 nyO3ndTW.net
>[^: ]*$
こういうの後ろから見るよう最適化されるのかな
870:デフォルトの名無しさん
23/09/04 15:41:22.66 zA8RUwS0.net
ややこしい検索は正規表現だけよりも
awkなどで簡単な正規表現とif文や関数を組み合わせる方が早い
871:デフォルトの名無しさん
23/09/04 18:55:45.65 BoKCZaYW.net
今回のはややこしくはない
むしろ簡単
872:デフォルトの名無しさん
23/09/04 19:08:28.07 8gjbapjk.net
>>849
アホらしすぎて・・・
873:デフォルトの名無しさん
23/09/04 20:45:35.27 DgpCgO2R.net
>>854
相手の技量は千差万別
自分を基準に考えるからキッズなんだ
たとえそれがHello World!レベルであったとしても
テンプレ使ってちゃんと質問されているのだから
874:デフォルトの名無しさん
23/09/04 20:55:42.10 Tkae+foX.net
>>855
気に入らないレスに絡んでるのは貴方も同じ
嫌なら見るな
875:デフォルトの名無しさん
23/09/04 20:58:59.14 DgpCgO2R.net
>>856
気に入る気に入らないじゃなくて
スレを荒らさないで欲しいって事
876:デフォルトの名無しさん
23/09/04 21:05:24.79 NKgrLrxG.net
訂正がありました
よろしくお願いします
●Regular Expressionの使用環境
Lua
●検索か置換か?
検索
●説明
最後に現れるコロンの右側だけ抽出したいです
●対象データ
ab:e-gkm: 33
●希望する結果
12
877:845 ◆06.HT2D93O4J
23/09/04 21:07:00.10 3GWjSEvz.net
>>849
ありがとうございました
878:デフォルトの名無しさん
23/09/04 21:16:52.45 NTqFdCv7.net
自演荒らしが捗るなw
879:デフォルトの名無しさん
23/09/04 22:23:04.68 0+pR+e5l.net
コロンが無い場合はマッチでよかったのかな?
>>851
されない
right to leftにするオプションが必要
対象文字列が短ければ大差ない
880:デフォルトの名無しさん
23/09/06 02:59:30.44 lSkku4oe.net
インフラ屋は性格良い
プログラマは性格悪い
881:デフォルトの名無しさん
23/09/06 07:21:34.46 yobQfJn+.net
俺はインフラ屋
性格良いよ
882:デフォルトの名無しさん
23/09/06 09:14:00.91 UTcPybKQ.net
プログラマは正確悪いというより
無駄な事をしたくないだけっていう人が多い
883:デフォルトの名無しさん
23/09/06 09:1
884:8:47.39 ID:BQBp+rCO.net
885:デフォルトの名無しさん
23/09/06 09:44:01.14 HD7oM5sP.net
態度と性格を区別できない人々
886:デフォルトの名無しさん
23/09/06 09:45:30.51 Ygn1Ao5e.net
>>866
能書きだけはいっちょまえ
887:デフォルトの名無しさん
23/09/06 09:57:30.15 tVigPql1.net
それがプログラマの性分
888:デフォルトの名無しさん
23/09/08 08:44:01.58 07e9DMWQ.net
ぼくはインフラ屋だけど性格悪い(´・ω・`)すまんね
889:デフォルトの名無しさん
23/09/11 00:45:50.96 cvO0nzmM.net
●Regular Expressionの使用環境
サクラエディタ
●検索か置換か?
検索
●説明
REM半角スペースを検索してREM部分のみに一致させたい
●対象データ
REM TEST
●希望する結果
REM
890:870
23/09/11 00:53:10.22 cvO0nzmM.net
/REM(?= )/kで出来ました
891:デフォルトの名無しさん
23/09/13 16:39:29.09 qhl2oEPa.net
●Regular Expressionの使用環境
javascript
●検索か置換か?
検索
●説明
( ) 括弧の中の文字列の特定の文字の時だけ一致させたいです
例でいえば括弧の中が「横浜」の時だけヒットさせたいです
●対象データ
東京都(ただし新宿区は除く)に住みたいけれど、神奈川県(だけど横浜は家賃が)でもいい
●希望する結果
だけど横浜は家賃が
892:デフォルトの名無しさん
23/09/13 16:41:17.76 qhl2oEPa.net
ごめんなさい872の追記です
括弧は半角全角どちらでも対応できるようにしていただけると助かります
893:デフォルトの名無しさん
23/09/13 18:37:54.95 3qYEVVGq.net
>>872
[((]\K[^))]*横浜[^))]*+(?=[))])
894:デフォルトの名無しさん
23/09/13 20:55:54.73 T8/GYmvT.net
対象データがそれだけきれいに整っているならこれでいいんじゃないかな
[^()()]*横浜[^()()]*(?=[))])
895:デフォルトの名無しさん
23/09/13 21:32:58.14 qhl2oEPa.net
>>874-875
ありがとうございます。875さんの方でプログラムがパーフェクトに動くものが叶いました。
896:デフォルトの名無しさん
23/09/14 00:22:01.99 L47o5ku7.net
鬼車は結局Unicode15対応版がリリースされなかったな
897:デフォルトの名無しさん
23/09/16 22:56:08.84 dIGSEJlt.net
同じワードの繰り返し(回数指定)を除外する正規表現を教えてください
898:デフォルトの名無しさん
23/09/17 07:04:17.16 jNYPDoV+.net
除外??
899:デフォルトの名無しさん
23/09/17 10:23:51.82 ht+84nM7.net
こういうこと?
abcxyzacz → bxy
900:デフォルトの名無しさん
23/09/17 14:29:52.53 yn1jo0MJ.net
"にゃんたま"が3回以上登場する文字列から全ての"にゃんたま"を取り除く
\A(?=(?:(?:(?!にゃんたま)[\s\S])*にゃんたま){3})((?:(?!にゃんたま)[\s\S])*)にゃんたま|\G((?:(?!にゃんたま)[\s\S])*)にゃんたま
901:デフォルトの名無しさん
23/09/17 14:33:30.19 yn1jo0MJ.net
置換後の文字列: $1$2
902:デフォルトの名無しさん
23/09/17 15:23:07.94 yn1jo0MJ.net
スマン、\Gの前に(?!\A)を置いてくれ
903:デフォルトの名無しさん
23/09/17 16:53:03.56 oNTID2ix.net
3回連続して出現する単語を削除
//javascript
s = '鼠牛虎兎龍蛇ねこねこねこ牛牛牛虎虎蛇蛇蛇蛇蛇龍龍兎';
console.log(s.replace(/(?:(.+)\1{2})/g, ''));
#python
s = '鼠牛虎兎龍蛇ねこねこねこ牛牛牛虎虎蛇蛇蛇蛇蛇龍龍兎'
print(re.sub(r'(?:(.+)\1{2})', '', s))
904:デフォルトの名無しさん
23/09/17 17:05:16.38 Fm9hMrUa.net
\nを30回以上は非表示するにはどうしたらいいですか
905:デフォルトの名無しさん
23/09/17 17:18:53.47 jNYPDoV+.net
非表示??
906:デフォルトの名無しさん
23/09/17 17:41:10.52 PjfamyxI.net
\nがn回以上除外で
907:デフォルトの名無しさん
23/09/17 22:51:45.08 jyrM2LRG.net
●Regular Expressionの使用環境
Perl
●検索か置換か?
検索
●説明
後ろから2つ目の/以降を取得したい
●対象データ
/a/bb/ccc/dddd/eeeee/cgi/sample.cgi
●希望する結果
/cgi/sample.cgi
お願いします
908:デフォルトの名無しさん
23/09/18 01:07:38.93 e1xt8o+y.net
.*\K/.*/.*
909:デフォルトの名無しさん
23/09/23 15:35:56.62 UU1JiicL.net
何回連続とか何番目とかってのは正規表現じゃなくて言語でなんとかした方がいいのでは
可読性的な観点からでも
910:デフォルトの名無しさん
23/09/25 14:32:09.00 w/fMdm7Q.net
正規表現じゃなく言語表現をなんとかした方がいい
911:デフォルトの名無しさん
23/09/25 15:45:13.07 b6Bm13IE.net
正規表現じゃなく性器表現とした方がいい
912:デフォルトの名無しさん
23/09/25 15:46:57.59 b6Bm13IE.net
正規表現じゃなく性器表現とかなんとかにした方がいい
913:デフォルトの名無しさん
23/09/26 17:43:27.65 WhLFttTP.net
添削って受け付けてたっけ?
自分が求める結果は得られてるけど、それでいいのかどうか
914:デフォルトの名無しさん
23/10/03 15:05:59.66 pjWozC8L.net
>>894
You ここで見せちゃいなよ、meが見てあげるよ
915:デフォルトの名無しさん
23/10/15 05:59:22.52 qeiyy+lM.net
oniguruma Release 6.9.9
Update Unicode version 15.1.0
NEW API: ONIG_OPTION_MATCH_WHOLE_STRING
Fixed: (?I) option was not enabled for character classes (Issue #264).
Changed specification to check for incorrect POSIX bracket (Issue #253).
Changed [[:punct:]] in Unicode encodings to be compatible with POSIX definition. (Issue #268)
Fixed: ONIG_OPTION_FIND_LONGEST behavior
> ONIG_OPTION_MATCH_WHOLE_STRING マッチした終端の位置がendになることを要求
マッチした開始の位置はstartでなくても良いらしい
oniguruma/test/test_options.c
x2(ONIG_OPTION_MATCH_WHOLE_STRING, "a", "aaaa", 3, 4); // OK (4文字目のaにマッチ)
> [[:punct:]]
Changed the definition of [:punct:] in Unicode encodings from \p{P} to \p{PosixPunct} = \p{P} + \p{S}.
(PosixPunct is a new addition.)
916:デフォルトの名無しさん
23/10/15 06:13:36.53 qeiyy+lM.net
> Fixed: ONIG_OPTION_FIND_LONGEST behavior
oniguruma/test/test_options.c
x2(ONIG_OPTION_FIND_LONGEST, "a(b|bc)", "ab", 0, 2); // OK ( "ab" にマッチ)
最左最長一致からガチ最長一致になってる
917:デフォルトの名無しさん
23/10/15 06:27:13.95 qeiyy+lM.net
間違えた、こっちだった
oniguruma/test/test_options.c
x2(ONIG_OPTION_FIND_LONGEST, "a(b|bc)", "abc", 0, 3); // OK ( "abc" にマッチ)
// マルチバイト文字には非対応のまま
x2(ONIG_OPTION_FIND_LONGEST, "ab|あ", "abあ", 2, 5); // OK ( "あ" にマッチ)
UTF-32 にエンコードしてから使えばいいのかしら
918:デフォルトの名無しさん
23/10/20 08:36:56.63 S3IcPVBq.net
Strawberry Perl
URLリンク(strawberryperl.com)
32bit版が出なくなった。64bitに乗り換えよう。(全銀)