[過去ログ] Regular Expression(正規表現) Part15 (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
802: 2021/08/25(水)18:27 ID:WqMYsX4p(1) AAS
複数行モード出なくても改行に一致させる事は可能ですか?
803: 2021/08/25(水)23:49 ID:HwQGLaDN(1) AAS
一致と呼んでいいのか分からないけど$が改行に対応すると思う
文字セットには使えないけどab(c|$)みたいな分岐は可能
804: 2021/08/26(木)04:30 ID:UZ8JqWyB(1) AAS
複数行モードって何?

mオプション(マルチラインモード)のこと?
それとも逆にオプションなし通常の場合やsオプション(シングルラインモード)のこと?

これの違いは解説でも読めば分かるけど
^ $ . の動作の違いってだけだから、\n,\rはどの場合でも有効だよ
805: 2021/08/26(木)08:14 ID:nEHOiDh0(1) AAS
ありがとうございます
806
(2): 2021/08/26(木)15:15 ID:Yy835424(1/3) AAS
JavaScriptの正規表現によるmatch検索で、「10918」ピッタリの数が存在するか調べたいときのことです
「1091」でも検索に引っかかってしまいます。
どうしたらよいでしょうか

以下の条件では10918だけでなく1091でも検索に引っ掛かります
let a = 1091;
new RegExp(`(?<!\d+)${a}(?!\d+)`, "i")
807: 2021/08/26(木)15:17 ID:Yy835424(2/3) AAS
>>806に追記
データは場合によっては「数字 数字 数字」になっており、そこから特定の数字だけ存在するか調べたいです
808
(1): 2021/08/26(木)15:44 ID:K931sT/w(1) AAS
\d+ → \\d
809: 2021/08/26(木)16:01 ID:a0WUR1Wk(1) AAS
関係ないけどlookbehind内で正規表現が使えない言語とか多いのな
810: 2021/08/26(木)16:10 ID:Yy835424(3/3) AAS
>>808
出来たありがとう
811: 2021/08/26(木)17:04 ID:/x6E5kVC(1) AAS
区切りがあるならlook aroundする必要ないよね
812: 2021/08/26(木)19:13 ID:1/m60R21(1) AAS
>>806
正規表現である必要ないんじゃない?
後読みの必要ある?
813: 2021/08/27(金)16:27 ID:kYh+qXrW(1/3) AAS
aa●abbbcccd□ddeee
aa□abbbcccd●ddeee

両方にヒット表現をお願いします
814: 2021/08/27(金)16:35 ID:zrk6+77w(1) AAS
^a
815: 2021/08/27(金)16:35 ID:7nxBSwRn(1) AAS
そのまんまであれば
aa[●□]abbbcccd[●□]ddeee
816
(1): 2021/08/27(金)16:47 ID:kYh+qXrW(2/3) AAS
あ、そうか
aa●abbbcccd●ddeee
aa□abbbcccd□ddeee
はヒットしてほしくないのです
817: 2021/08/27(金)16:56 ID:mGcBpOgN(1) AAS
じゃあ
(aa●abbbcccd□ddeee|aa□abbbcccd●ddeee)
818
(1): 2021/08/27(金)17:06 ID:kYh+qXrW(3/3) AAS
やっぱりそれしかないですかね。実際は
(.*●.*□.*)|(.*□.*●.*)
でこうなるのです
画像リンク[jpg]:i.imgur.com
819: 2021/08/27(金)17:09 ID:56S9Iaf9(1) AAS
全体をマッチ対象にしたいの?
820
(1): 2021/08/27(金)17:45 ID:ldxLRyEW(1) AAS
>>816
aa([●□])abbbcccd(?!\1)[●□]ddeee
821: 2021/08/27(金)19:46 ID:FthY+dex(1) AAS
EmEditorはしらないなー
(?m:(.*●.*□.*)|(.*□.*●.*))
822: 2021/08/28(土)05:34 ID:Z+kCS9um(1) AAS
.+?([●□]).+(?!\1)[●□].+
823
(1): 2021/08/28(土)08:18 ID:3w95mdWV(1) AAS
>>818
そのダイアログはCtrl+Cでテキストコピーできると思うからググりやすいように
コピペしてほしいな

あとEmEditorはBoost.RegexとOnigmo(鬼雲)を使い分けられるから、
オプションでどっち使ってるのかも教えて
外部リンク:jp.emeditor.com
824: 2021/08/28(土)10:30 ID:2Y0XlSPP(1) AAS
>>823
---------------------------
EmEditor
---------------------------
The complexity of matching the regular expression exceeded predefined bounds. Try refactoring the regular expression to make each choice made by the state machine unambiguous. This exception is thrown to prevent "eternal" matches that take an indefinite period time to locate.
---------------------------
OK
---------------------------

例示してもらった表現いずれも同様のメッセージが出てましたが、なんとOnigmoに変更したら出なくなりました。
いろいろ新しく知ることが出来ました
825
(1): 2021/08/28(土)10:38 ID:gjZsNEUJ(1/2) AAS
(?!\1)ってどういう意味?
826: 2021/08/28(土)11:02 ID:o77XzsS5(1) AAS
>>825
「直前に"一つ目のパターン"がない位置」を指すメタ表現
827: 2021/08/28(土)11:25 ID:m2ZH6alf(1) AAS
日本語的には"直後に"じゃね?
読んで行く方向、カーソルの前方だとしても直前だと意味が逆転しそう
828
(1): 2021/08/28(土)13:02 ID:rTzGvJSm(1/2) AAS
>>820
この(?!/1)は分かるけどその次の[●□]との繋がりが分からん
どういうこと?
829: 2021/08/28(土)13:33 ID:gjZsNEUJ(2/2) AAS
ありがとう完全に理解した
\1 は ([●□]) のことを指してて
(?!\1)[●□] で前の ([●□]) で選んだものと被らないようにしてるわけか
830
(1): 2021/08/28(土)15:08 ID:F14AY+cI(1) AAS
>>828
(?!\1) は「1つめの括弧で一致した内容はこの位置(の直後)には現れない」という言明

([●□]) が ● に一致したなら (?!\1) は (?!●)
([●□]) が □ に一致したなら (?!\1) は (?!□)

なので最初の [●□] と二つめの [●□] では必ず互いに異なる文字が一致する、という具合
831: 2021/08/28(土)15:43 ID:rTzGvJSm(2/2) AAS
>>830
ああなるほどありがとう!
832: 2021/09/03(金)00:14 ID:X1LFwexk(1/5) AAS
●Regular Expressionの使用環境
さくらエディタ

●検索か置換か?
検索

●説明
ある文字列を含まない形で最短一致させたい

●対象データ
「吾輩は猫」「吾輩は三毛猫」「吾輩は犬」「吾輩は犬」
という1行の文書です。

●希望する結果
省6
833: 2021/09/03(金)00:17 ID:X1LFwexk(2/5) AAS
連投すみません。
^^^^^^
がズレました。

「吾輩は猫」「吾輩は三毛猫」「吾輩は犬」「吾輩は犬」
のうち、3つ目のカギ括弧、
つまり、1つめの「吾輩は犬」にマッチする正規表現を探しております。
834
(1): 2021/09/03(金)00:36 ID:OHAz9Fu/(1) AAS
「[^猫]*?」
835: 2021/09/03(金)02:33 ID:X1LFwexk(3/5) AAS
>>834
すいません><
例題を単純化しすぎました。
せっかくご回答いただいたのに申し訳ないです。

「吾輩はネコである」「吾輩はミケネコである」「吾輩は「ネコ」である」「吾輩はイヌである」

というように、排除したい文字列(ネコ)は複数文字なんです。さらに、カギ括弧が二重の可能性があります。
カギ括弧内にネコを含まないものなら、イヌ以外でもなにがマッチしても問題ありません。
左から見て内部に「ネコ」を含むカギ括弧を排除していき、最初にネコを含まないカギ括弧にマッチさせたいのです。
836: 2021/09/03(金)02:34 ID:1+MNr6V9(1/2) AAS
^.*?\K「(?~猫|」)」
^.*?\K「[^猫」]*+」
837
(1): 2021/09/03(金)02:39 ID:1+MNr6V9(2/2) AAS
^.*?\K「(?~ネコ|」)」
838: 2021/09/03(金)02:56 ID:X1LFwexk(4/5) AAS
>>837
おおお…凄い…できました!
ずっと探し求めていた魔法がここに…

これは、なにが起こっているのでしょうか。
なんらかの後方参照が行われているのは分かるのですが…
839: 2021/09/03(金)03:09 ID:X1LFwexk(5/5) AAS
「(?~ネコ|」)の、?~は、「不在繰り返し」というのですね。

ということは、「(?~ネコ|」)は、
「の後に、【ネコ】の不在繰り返し 又は 」がくるもの、という意味ですね。

不在繰り返しなんて便利な表現があったとは…
ご親切にありがとうございます。
840: 2021/09/04(土)02:41 ID:ExeocnPJ(1) AAS
> ?~は、「不在繰り返し」というのですね
違う。?~ だけでは意味を成さない
(?~式) 「非包含オペレータ」 "式" を含まない文字列に一致する
式にあたる部分は "ネコ|」" なので "ネコ" と "」" を含まない文字列に一致
841: 2021/09/04(土)10:50 ID:vsW0UBqv(1) AAS
非包含オペレータと不在繰り返しは紛らわしいな
(?~ネコ)がネコのネにマッチするかしないか
842: 2021/09/04(土)11:49 ID:KRHaMmez(1) AAS
「吾輩はネコである」
「(?~ネコ)」 不一致
「(?~ネコ)(?~ネコ)」 一致
「(?~(?=ネコ))(?~ネコ)」 不一致

「(?~(?=ネコ))(?~(?<=ネコ))」
「ネコ」 不一致
「吾輩はネコ」 一致
「吾輩はネコである」 不一致

「(?~(?=ネコ).)(?~.(?<=ネコ))」
「ネコ」 不一致
省2
843: 2021/09/04(土)15:57 ID:e0R2hmQ/(1) AAS
この不在繰り返しを、Python3.6のreモジュールで書く方法はありますか?
844: 2021/09/08(水)12:26 ID:R6BptgGx(1) AAS
むずすぎて全然分からん
まぁPythonで使えんみたいやしいいか
845: 2021/09/08(水)14:14 ID:QqH5BAVe(1) AAS
文字列の否定は否定先読みで
re.findall("「(?:(?!ネコ).)*」", string)
846: 2021/09/08(水)15:37 ID:bwkSQigi(1) AAS
(?~abc) "abc"に一致しない文字列に一致。"abc"の"a","ab","bc","c"に一致する
(?:(?!abc).)* "abc"の"a"に一致しない文字列
(?:.(?<!abc))* "abc"の"c"に一致しない文字列

abc に対し
(?~abc)c 一致
(?:(?!abc).)*c 不一致
(?:.(?<!abc))*c 一致
847: 2021/09/15(水)04:13 ID:2Sm06Jhf(1) AAS
(?~式) 非包含式
(?~) 非包含オペレータ(演算子)  (被演算子は~と)の間に内挿される)
/* 田中さんの元論文がこの使い分けを間違ってるわけだが */

概念を語る場合は、繰り返しや文字クラスや選択のように、単に「非包含」と呼ぶ
848: 2021/09/17(金)16:17 ID:J/w/zJeW(1) AAS
自己肯定感の低い人が仕事できない本当の理由
動画リンク[YouTube]
【致命的】個人で稼ぐのに向いていない人の特徴7選
動画リンク[YouTube]
自己肯定感の低い人にオススメの副業5選
動画リンク[YouTube]
【質問力】雑魚と思われてしまうダメな質問の仕方5選
動画リンク[YouTube]
集団の中で落ちこぼれ組がやりがちなこと
動画リンク[YouTube]
省4
849
(4): 2021/09/27(月)17:11 ID:yz6wzePk(1/2) AAS
下記のソフトで書庫ファイルをリネームしたいのですが、正規表現が必須のようです。
どうかご教示をお願いできませんでしょうか。
 外部リンク[html]:www.vector.co.jp

【書庫内のファイルの先頭に、親フォルダ名を追加したい】
 例: ○X△.zip 内の 00.jpg~99.jpg を ○X△.zip.00jpg~○X△.zip.99.jpg にしたい
850
(1): 849 2021/09/27(月)18:00 ID:yz6wzePk(2/2) AAS
訂正させて下さい。
 親フォルダ名じゃなく親ファイル名でした。

下記のソフトで書庫ファイルをリネームしたいのですが、正規表現が必須のようです。
どうかご教示をお願いできませんでしょうか。
 外部リンク[html]:www.vector.co.jp

【書庫内のファイルの先頭に親ファイル名を追加したい】
 例: ○X△.zip 内の 00.jpg~99.jpg を ○X△.zip.00jpg~○X△.zip.99.jpg にしたい
851: 2021/09/27(月)18:20 ID:QHV+6MAZ(1) AAS
そのソフトの機能とあなたがしたい事が正確にはわからんが、
正規表現で自動でディレクトリ名は入らんよ。
それをやりたかったら普通はプログラミングの領域。

単に先頭に指定文字列を入れたいなら
検索:^
置換:○X△.zip
852: 2021/09/27(月)18:36 ID:W1wq+c4c(1) AAS
>>849
^:○X△.zip

アーカイブ名を参照するメタ文字が用意されていれば別だけど、一般的には都度指定するしかない

もし処理対象アーカイブが一定数以上あったり、定期的に一定数以上のアーカイブに対して同処理が必要になることが予想される場合、自分なら、1) 作業フォルダに解凍、2) リネーム、3) 再圧縮、4) 元アーカイブに上書きコピー、5) 後片付け、を指定フォルダ以下のアーカイブに対して実行するバッチファイルを書いて、それを実行すると思う(7z)
853: 2021/09/27(月)19:31 ID:wTAYfgov(1) AAS
>>850
親ファイル(zipファイルのことだよね?)の名前を人手で入れるなら
^:○X△.zip
みたいな感じで行けるんじゃね?
外部リンク:frostmoon.sa
kura.ne.jp/gui4reces/gui4reces0018ss_rename.png
854: 2021/09/27(月)22:31 ID:2WG9Jybb(1) AAS
ファイル名に拡張子以外のドットは特別な理由でも無い限り使わないようにした方が良い
あと質問内容は正規表現では無くソフトの使い方のようなので微妙にスレチ
作者の宣伝?
855
(1): 2021/09/28(火)09:31 ID:fMeX4han(1/3) AAS
皆さん、ありがとうございます。
せっかくアドバイスを頂いたのですが、何が何やらさっぱりで・・・
せめて正規表現を少しでもかじってから再度教えを請いたいと考えていたので返信が遅れてしまいました。
しかし・・・
正規表現のサイトを少し覗いてみたのですが私には敷居が高すぎて・・
もう少し頑張ってみるつもりですが、かなりきつそうです
856: 2021/09/28(火)09:38 ID:ZQP3z5os(1) AAS
>>855
アドバイスじゃなくて答えが書いてあるんだから、せめて試せよ
857: 849 2021/09/28(火)10:21 ID:fMeX4han(2/3) AAS
す、すみません。
検索文字列とか置換文字列とか難しく考えすぎて、
^:○X△.zip が回答そのものだったとは思いませんでした。

試してみました。
しかし、ログでは成功してるはずなのに実際のファイルはリネームされていません。
ソフトの使用方法がおぼつかないため、もう少し試行錯誤してみます。
とりあえずご報告だけさせて頂きました。
858: 2021/09/28(火)13:29 ID:T0yrrR3v(1) AAS
○X△を○X△のまま使っただろ?
859: 849 2021/09/28(火)20:59 ID:fMeX4han(3/3) AAS
何でわかるんですかw

第一階層までしかリネームできないみたいです
そうなると、解凍してリネームして再圧縮が正解ですね。
バッチファイルは・・・・・・無理ですが
860: 2021/10/04(月)16:07 ID:N0nKW8hc(1/3) AAS
教えてください。
AAAA
AAAA(1)
AAAA(2)
AAAA(3)
という中から
()付きのものだけ抜き出す式はどう描くのでしょうか()の中身ではなくてAAA(3)などを丸ごとです。
お願いします。
861
(1): 2021/10/04(月)16:24 ID:bhYXHQji(1/3) AAS
^.*?¥(.*?¥)$
862
(1): 2021/10/04(月)17:32 ID:N0nKW8hc(2/3) AAS
>>861
抽出できない・・・です
ごめんなさい、
AAAA(3).doc
とか拡張子もありました。
863: 2021/10/04(月)17:52 ID:N0nKW8hc(3/3) AAS
次々すみません()の中は半角1文字の数字です。
864: 2021/10/04(月)17:58 ID:bhYXHQji(2/3) AAS
>>862
¥はバックスラッシュに置き換えな
^.*?¥([0-9]¥)
865: 2021/10/04(月)18:06 ID:bhYXHQji(3/3) AAS
あと、()が全角と半角では扱いが異なるから書き込むたびに変わってちゃダメ。
全角と半角両方に対応させたいなら^.*?[¥((][0-9][¥))]
866: 2021/10/04(月)19:38 ID:zsq22U2a(1) AAS
拡張子は含めるの?
867: 2021/10/04(月)19:42 ID:qPYIGz+e(1) AAS
.*\([0-9]\).*
868: 2021/10/15(金)13:06 ID:Wvwj+LKl(1) AAS
うんこおおおおおおおおおお

うんこ!!!!!!!!
ってjavascriptで正規表現で変換したいです
text.replace(/うん(こ)+/,"!")だと明らかに上手く行きませんがどうしたらよいのでしょうか?
869: 2021/10/15(金)13:30 ID:vygdYOMS(1) AAS
検索から違ってるし、function使わんと同回数繰り返すとかは無理
text.replace(/(うんこ)(.+)/,function(s,g1,g2){return g1+Array(g2.length+1).join('!')});
870: 2021/10/16(土)08:23 ID:akCvqHZs(1/4) AAS
先頭が-か+か0-9
以降0-9のみ
はどう書きますか?

-123 OK
12+3 NG
871: 2021/10/16(土)08:43 ID:6ga3nra2(1/21) AAS
^[\-+]?[0-9]+
872
(1): 2021/10/16(土)09:35 ID:yphHFJu4(1/2) AAS
1つ目の文字クラスの中の円マークはなに?
873
(3): 2021/10/16(土)09:45 ID:yphHFJu4(2/2) AAS
文字クラスの1文字目で使う場合には範囲指定と誤解される可能性はないから、エスケープ不要なのでは、という疑問です
874
(3): 2021/10/16(土)09:59 ID:6ga3nra2(2/21) AAS
>>873
エスケープをつけておいたほうが人間にとって読みやすく、後々パターンを改変した時にミスせずにすむ
875
(5): 2021/10/16(土)10:04 ID:6ga3nra2(3/21) AAS
「○○してもいい」が「○○しなければならない」に置き換わってしまう人たまにいるけど、あまりPGに向いてないかもね
876: 2021/10/16(土)10:40 ID:Yt5Fp2tM(1) AAS
悔しそう
877: 2021/10/16(土)10:48 ID:PMQb3sBw(1/5) AAS
質問者より先に回答者に対してあーだこーだ言ってくる奴にロクな奴はいない
と同時に質問者の自演の可能性もある
>>872-873みたいなのは分かってて聞いてるからそういうレスこそ不要なのでは、という疑問です
878: 2021/10/16(土)11:02 ID:+QyAV8Aw(1) AAS
悔しそう
879: 2021/10/16(土)11:15 ID:6ga3nra2(4/21) AAS
あまり偏屈な人は回答しないほうがいいと思うけど、現実世界で阻害されている偏屈な人ほどねじ曲がった回答に生きがいを見出してしまう
880: 2021/10/16(土)11:24 ID:PMQb3sBw(2/5) AAS
機械から見て無駄のない極力短い正規表現を作れる俺カッコイイみたいな自己満な人もいるからねえ
おれは、ぱっと見て分かりやすいとか修正しやすい書き方するなあ
そうすることでデメリットが多くなってしまうなら別だけどね
まぁケチ付けることが目的の人がいても仕方ないけど
881: 2021/10/16(土)11:25 ID:xOMo/rXl(1) AAS
けど...しまう
882: 2021/10/16(土)11:27 ID:PMQb3sBw(3/5) AAS
本当に知識がある人は知識マウント取らずに、
なぜそういう回答をしているのか推察できるからいちいち突っ込まない
どうしても回答したい場合は、他の回答者には触れず回答だけ書く
883
(1): 2021/10/16(土)11:42 ID:y3W2HSwc(1) AAS
874だけで終わっとけば良かったのにw
884
(1): 2021/10/16(土)11:52 ID:yYNJhuOF(1) AAS
自演バレバレでも「悔しそう」に反応せずにはいられなかったんだろ

長文が自己紹介過ぎて笑える
885: 2021/10/16(土)11:59 ID:6ga3nra2(5/21) AAS
MUST、SHOULD、MAYの理解が不完全な人はなんでもMUST扱いしたがる
冗長性を理解できない着物警察の思考様式
886
(1): 2021/10/16(土)12:03 ID:qP61rC0r(1) AAS
おれも-はエスケープするな
つか+もエスケープする
エスケープ可能なのはエスケープしとく
887: 2021/10/16(土)12:30 ID:9AQLH6H/(1) AAS
俺は極力しない
888: 2021/10/16(土)12:33 ID:FxLIumwg(1) AAS
しないんじゃないかな
889: 2021/10/16(土)12:39 ID:igFsF4z+(1) AAS
ま ちょっと覚悟はしておけ
890: 2021/10/16(土)12:41 ID:BzHPp6pT(1) AAS
なんとなくプラスマイナスの順にしたいから ^[+\-]?[0-9]+ って書くかな
891
(2): 2021/10/16(土)12:47 ID:akCvqHZs(2/4) AAS
質問者です
pythonなのでエスケープはr文字列頼りです

ところで871のだと
12+3 は 12,+3で取れますが
正規表現を使った、文字列の判定がしたいのです
例挙げたように、頭は-+0-9 以降0-9のみで構成された文字列のみTrue、それ以外はFalseしたい

一応 if len(re.findall(pat, s)) == 1 かどうかで判定できてる気がするけど
方法としてはこれでいいんですよね?
すいません正規表現関係なくて
892: 2021/10/16(土)12:53 ID:akCvqHZs(3/4) AAS
しかもハット忘れて偶然できてただけだっった(笑)

うーむ
893: 2021/10/16(土)12:59 ID:akCvqHZs(4/4) AAS
^[-+]?[0-9]+$
こうか
894: 2021/10/16(土)13:52 ID:wy7RR+Lb(1/2) AAS
>>891
re.fullmatchで
895: 2021/10/16(土)14:12 ID:UbsVp7JO(1) AAS
fullmatchってあったのか
そりゃそうか
896: 2021/10/16(土)14:38 ID:6SnREp4P(1) AAS
正規表現スレで、円マークという誤解を招く表現はやめてほしい
バックスラッシュと表現すれば誤解を招かない
897: 2021/10/16(土)15:20 ID:1kPG7eLG(1) AAS
回答で円記号を使われるのは気になる
わざわざ置き換え指示するくらいなら最初から正しく書けばいいのに
898: 2021/10/16(土)15:25 ID:CFrnAbxP(1) AAS
承認欲求を満たせないと見るや他人を下げて自分を上げようとする人は
自己評価は高いんだけど周りからの評価は低く不満を溜め込んでるタイプ

5chあるあるだけど中には粘着する人もいるので気をつけようね
899
(1): 2021/10/16(土)16:28 ID:q69AYoXR(1) AAS
ID:6ga3nra2のことか
900: 2021/10/16(土)16:51 ID:UUKQ6Z7Y(1) AAS
>>899
おしい!
901: 2021/10/16(土)17:35 ID:VO4IgATZ(1) AAS
"質問者"や"回答者"という立場を異常に強調するのは
"質問者"の承認が欲しくて堪らないから

承認が得られない場合や承認を得ることを邪魔された(と感じた)ら
自己防衛のために他者を攻撃する

攻撃の度合いが強い人ほど病んでる度合いも強い
1-
あと 101 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.996s*