twinkle for iOS 正規表現専用 3 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
twinkleの正規表現のテストや正規表現に関する質問など
前スレ
twinkle for iOS 正規表現専用(実質2スレ目)
http://karma.2ch.net/test/read.cgi/ios/1447593710/ 前スレ読む以前にこのスレ内に既に回答のある質問をスレ内検索すらせずに「上手くいきません」とか普通ならそうですかで終わりだよ
質問するなら「○○の方法で試したのですが上手くいかないのでどなたか教えてください、お願いします。」でしょ 細かく区切って改行してるレスをNGにしたいけど上手くいかない (?#同じ文字や文字列が5回連続)(.+?)\1{4}
どなたかこれを解説してくださる方いませんか 自分でどう解釈したか開陳してくれ間違ってたら突っ込みが入るだろうよ (.+?)
.→何か1文字
+→1個以上
?→分からない
\1
(.+?)と同じ
{4}
(.+?)を4個
?の意味が分からないのと
(.+?){5}とは何が違うのかが知りたいです >>140
.+?は.+が0〜1個、つまり最小限を指す
(あ+)と(あ+?)で"あああああ"を調べた場合、前者は"あああああ"を1つ、後者は"あ"を5つ見つける
(.+?){5}は「1文字以上の全ての文字」が5回
(.+?)\1{4}は「1文字以上の〜」が1回と、それと同じものが4回 ?そのものは分かるんだよな?ここでの用法が分からないだけだよな?
?そのものが分からないなら初歩的知識がないので正規表現でググってこいとしか言いようがない
用法が分からないなら正規表現+最短でググれ
後者は
.{4}
(.)\1{4}
で適当な文章、例えばこのスレを正規表現検索してくれ
手を動かして試せばなにが違うか一目瞭然だよ
怠けないで手を動かせ ありがとうございます
>>141
やはり後半が理解できません…
>>142
正規表現検索ってどうやるんですか?
あと新たに疑問が出てきたんですが
(.+?)と(.+{0,1})って同じですよね?
この0は意味あるんですか?(.+{1})とは違いますか? > 正規表現検索ってどうやるんですか?
てきとーに正規表現検索使えるアプリ探せば?
> (.+?)と(.+{0,1})って同じですよね?
違うというか後者は構文エラーになる
((.+){0,1})
ならエラーにならないけどね
(.+?)と((.+){0,1})としても同じではない
答えはすでに教えた。「用法が分からないなら正規表現+最短でググれ」
典型的な自分で動かないタイプだなこりゃ
教えられたことを咀嚼して>>140をアップデート出来るようになってくれ 最短一致とか最長一致
正規表現+バックトラックorパフォーマンス
とかグクってみては >>143
(.+?){5}は5回とも文字指定されてないため"(あ)(い)(う)(え)(お)"でもいける
(.+?)\1{4}は始めが(あ)ならその後も(あ)しか認めない"(あ)(あ)(あ)(あ)(あ)"
正規表現でアプリ検索したらどう書くとどうマッチするかわかるのあるよ
>>7 こういうサイトもある
使われてるところによって少し書き方に違いがあるけど、違いを探す癖をつければすぐわかるから大丈夫 >>2
2を入れると2が表示されないんだが
どこに#入れると良いのかな? 一つ一つじゃなく複数のワードをまとめてNGする方法ありますか?
たとえば
『死ね アホ 馬鹿 ハゲ ・・・』をすべてNGにする方法 >>148
>>3
>●複数の文字(または文字列)を指定
>(あいう|かきく|さしす) 'あいう' 'かきく' 'さしす'という文字列のどれかひとつ ABCとDEF という単語を両方含むレスをNGにする事はできますか?
ABCだけが含まれるレスとDEFだけが含まれるレスはNGにせず、両方含まれる場合だけNGにしたいです >>150
5
●本文に特定の文字列が含まれる、含まれない
(?#1行にA,Bが含まれる)(?=.*A)(?=.*B)
(?#複数行にA,Bが含まれる)(?=[\s\S]*A)(?=[\s\S]*B) >>151
こういう認識で合ってますか?
(?#1行にA,Bが含まれる)(?=.*A)(?=.*B)
○○○○○ワード1○○○○○○ワード2○
○○○○○○○○○○○○○○○○○○○○
(?#複数行にA,Bが含まれる)(?=[\s\S]*A)(?=[\s\S]*B)
○○○○○○○ワード1○○○○○○○○○
○○○○○○○○○○○ワード2○○○○○
A=ワード1
B=ワード2 >>5
(?#複数行にAが含まれBが含まれない)^(?=.*A)(?!.*B).*$
ではなく
(複数行にAが含まれB又はCが含まれない
のやり方教えていただけませんか >>155
(?#複数行にAが含まれBが含まれない)^(?=.*A)(?!.*(?:B|C)).*$ >>153
[>>]{2}1
大文字を含めなければ正規表現なしでいける
>>155
Bを(B|C)にする >>5の確認なんですが
(?#複数行にAが含まれBが含まれない)^(?=.*A)(?!.*B).*$
についてですが
^(?=.*ワードA)(?!.*ワードB).*$
でNGに登録すると
○○○○ワードA○○○○
○○○○○○○○○○ NGされる
○○○ワードA○○○○○
ワードB○○○○○○○○ NGされない
○○○ワードA○○○○○
○○○○○○ワードC○○ NGされる
○○ワードA○○ワードB○
ワードA○○ワードC○○○ NGされない
で合ってますか? >>161
合ってる
ちなみにその正規表現はAB(C)の順序は関係なく働く >>162
ありがとうございます
実際にNGしてみたんですけど
なぜか消えないものと消えるものがあったので
困ってました 原因がわかりませんが他の方法でNGして妥協しました >>161
処理系がtwinkleではないしそもそもiOSでもないが同様目的には以下を使っている
(?s:^(?=.*(?:ワードA))(?!.*(?:ワードB))) 下の2つの条件を満たす正規表現の方法を教えて欲しいです。おねがいします
条件1
(ワードA)の後に続く最初の文字が
「の、み、ち)」はNGされない(それ以外の文字はNGされる)
条件2
(ワードA)の後の文字が「の」の場合でもそのレスに(ワードB)が含まれていない場合はNGされる
※(ワードB)が含まれていても(ワードAの後の文字が「の」以外の時はNGされる)
例
ワードA=明日
ワードB=予定
とする
【NGされないパターン】
明日の
明日みんなで
明日ちゃんと
明日の予定は
【NGされるパターン】
明日は
明日で
明日も
明日も予定は >>164
うわ!ありがとうございます!
>>163
の問題が解決できました!感謝! >>165
矛盾あり(行単位処理として)
> 【NGされないパターン】
> 明日の
条件1のみであればNGされないが
> 条件2
> (ワードA)の後の文字が「の」の場合でもそのレスに(ワードB)が含まれていない場合はNGされる
> ※(ワードB)が含まれていても(ワードAの後の文字が「の」以外の時はNGされる)
ワードBを行内に含んでいないので条件2によりNGされなければならない
以下は
> 明日の
が条件2によりNGされることを前提
(「そのレス」とあるが見本が行単位前提なので行単位しか考慮していない。レス全体なら>>164同様に書き直す必要がある)
【NGされないパターン】
明日みんなで
明日ちゃんと
明日の予定は
【NGされるパターン】
明日の
明日は
明日で
明日も
明日も予定は
明日の未定
> 条件1
> (ワードA)の後に続く最初の文字が
> 「の、み、ち)」はNGされない(それ以外の文字はNGされる)
明日(?![のみち])
(条件2に関わる「明日の 」「明日の未定」「明日の予定は 」すべてこれのみではNGと判断されない)
> 条件2
> (ワードA)の後の文字が「の」の場合でもそのレスに(ワードB)が含まれていない場合はNGされる
> ※(ワードB)が含まれていても(ワードAの後の文字が「の」以外の時はNGされる)
^(?=.*(?:明日の))(?!.*(?:予定))
(条件2に関わる「明日の 」「明日の未定」「明日の予定は 」の内「明日の予定は 」以外はNGされる)
よって
(?:明日(?![のみち]))|(?:^(?=.*(?:明日の))(?!.*(?:予定)))
すべてテンプレ内で説明されている
だからといって「テンプレにあるから質問するな」とは言わない
しかしせめて「これこれ〜したがうまくいかなかった」と自分で手を動かして試行錯誤した経緯(正規表現)を書いてほしいところ(個人の感想です) >>167
レスありがとうございます
今からゆっくり内容を理解しようと思います
>せめて「これこれ〜したがうまくいかなかった」と自分で手を動かして試行錯誤した経緯(正規表現)を書いてほしいところ(個人の感想です)
これに関してですが「正規表現」について知ったのがここ2〜3日で今はまだ ○○|○○|○○
でしかNGワードを登録できてない状態で
自分で特殊文字を使って試行錯誤できるレベルではなくて、すぐにでもNGしたい気持ちの方が強く円投げした形になってしまいました
正規表現には興味があるので試行錯誤できるレベルになりたいです
レスありがとうございました チンコはNGだけど
ガチンコはNGしないってできます? >>169
>>3
> ●後ろや前に特定の文字(または文字列)があるかないかを指定
> (?=あいう) 後ろに'あいう'がある
> (?!あいう) 後ろに'あいう'がない
> (?<あいう) 前に'あいう'がある
> (?<!あいう) 前に'あいう'がない >>3
の(?!)以降のアルファベットの大文字小文字が区別されないとおなじように
カタカナとひらがなが区別されないようなのってどうすればいいですか? >>174
それは定義されてないので無理
「あいす」「アイス」「あイす」などなら[あア][いイ][すス]と列挙するしかない あいうえの順序でワードが点在してるときにNGするにはどうしたらいい?
◯◯あ◯◯◯い◯う◯◯◯え◯◯←NG
◯◯う◯◯◯え◯あ◯◯◯い◯◯←NGされない
こういう感じに >>179
あ.+い.+う.+え
複数行にまたがる場合は
あ[.\n]+い[.\n]+う[.\n]+え >>153
[>>][:blank:]*[00]*[11](?![\d0-9])
>>180は>>3がマッチしない
素直に*でいいのでは? ラーメン書けない実況書けないファミレス書けない関東書けない
もうダメぽ >>2
上から5個目はなんのやつですか?
消えてる? 歩(?!く|こ|け) の場合
@歩く 歩こう 歩けば はNGされませんが
A歩幅 歩み はNGされます
ここまでは良いのですが
五十歩百歩 等『歩』で終わる文がNGされてしまいます @Aは変えずに文末が歩の場合にNGされなくするにはどうしたらよいですか? $や\nをいれてみたりしたんですが上手くいきません >>185,186
歩(?!く|こ|け|\n|$)
これでいけますが、そのレス内に歩幅などのNGワードがあればそちらが優先されNGとなります
また、1文字や改行は[]を用いて下のようにも書けます
歩(?![くこけ\n]|$) >>187
歩(?!く|こ|け|\n|$)
試してみました
○○○五十歩百歩
○○○○○○○○○
はNGなるのですが
五十歩百歩
のみのレスだとNGになりませんでした
これもNGにする方法がありますか? >>185
>NGされなくするにはどうしたらよいですか?
>>188
>これもNGにする方法がありますか?
NGにしたいのかしたくないのか? >>189
歩 で終わるパターンはすべてNGしたいです
レスが
歩や独歩 のみだとNGされません すみません>>185は間違えました
>五十歩百歩 等『歩』で終わる文がNGされてしまいます @Aは変えずに文末が歩の場合にNGされなくするにはどうしたらよいですか?
訂正
五十歩百歩 等『歩』で終わる文がNGされません @Aは変えずに文末が歩の場合にNGされるようにするにはどうしたらよいですか? NGにしたいなら>>185のままでいいです
NGにならない場合はそのレスの"歩"をコピーし、↓の◯部分に入れてみてください
[歩◯](?!く|こ|け)
それでもNGされない場合、スレのURLとレス番を示したほうがいいでしょう >>192
あ なんかこんがらがって迷走してました
>>187で大丈夫みたいです
ありがとうございました ABCの前の文字
○ABCの部分がローマ字、数字、URLに使われる記号(\ _ . :)以外の時にABCをNGにする場合どうすれば良いですか?
文の最初にABCがくる場合もNGできればなお良いです >>196
(?<![a-zA-Z0-9\\_\.:])ABC 文中に「。」が10個以上ある時
を指定できますか? 。。。。のように連続する場合ではなく
文全体で計10個以上の場合です >>201
おお すごい
ありがとうございます!! アンチ対策で正規表現を作っていてそのNGワードを住人と共用する為に2ちゃんにコピペすする場合、文字数制限があって全角で128文字以上になる場合、その都度改行しないとエラーがでて書き込めません。
その為
>>5 @ A
の ^(?=.*A)(?!.*B).*$
等の表現で『 | 』を沢山使うと文字数の問題で下のように@の部分が重複してしまい、全体として長くなってしまうし@がながければ長いほどAに登録できるワードも減ってしまいます(2ちゃんに書き込む時の文字数制限の問題)
自分一人で使う分にはいくら長くなっても問題ないのですが、書き込むことを考慮するとできるだけ簡略化したいです
^(?=.*aaaa|bbbb|cccc|dddd|eeee|ffff|gggg|hhhh|iiiii|jjjjjj|kkkkh)(?!.*lllll|mmmmmm|nnnnn|oooo|ppppp|qqqqpq).*$
^(?=.*aaaa|bbbb|cccc|dddd|eeee|ffff|gggg|hhhh|iiiii|jjjjjj|kkkkh)(?!.*あああ|いいい|ううう|えええ|おおお|かかかか).*$
>>3の
『\1』は
^(?=.*A)(?!.*B).*$ の場合
一つ目の()なので(?=.*A)が該当するとおもうのですが
これの応用的な使い方で
正規表現全体(改行含む)の○個目の()を指定することはできますか? 補足
こんな感じで、重複してる部分を指定したいです
【^(?=.*aaaa|bbbb|cccc|dddd|eeee|ffff|gggg|hhhh|iiiii|jjjjjj|kkkkh)】(?!.*lllll|mmmmmm|nnnnn|oooo|ppppp|qqqqpq).*$
^(?=.*(【】と同じ))(?!.*あああ|いいい|ううう|えええ|おおお|かかかか).*$
^(?=.*(【】と同じ))(?!.*ききき|くくく|けけけ|こここ|さささ|ししし).*$ >>203-204
構文はひとつひとつ別物なのでできません
手間はかかりますがテキストファイルやサイトなどを参照してもらったり、以下のようにしてはいかがでしょう
^(?=.*(@))(?!.*(A)).*$
@に入れる
aaaa|bbbb|cccc|dddd|eeee|ffff|gggg|hhhh|iiiii|jjjjjj|kkkkh
Aに入れる
lllll|mmmmmm|nnnnn|oooo|ppppp|qqqqpq|あああ|いいい|ううう|えええ|おおお|かかかか|ききき|くくく|けけけ|こここ|さささ|ししし
----または、
正規表現NGワード(改行を消して使ってください)
^(?=.*(aaaa|bbbb|cccc|dddd|eeee|ffff|gggg|hhhh|iiiii|jjjjjj|
kkkkh))(?!.*(lllll|mmmmmm|nnnnn|oooo|ppppp|qqqqpq|
あああ|いいい|ううう|えええ|おおお|かかかか|ききき|
くくく|けけけ|こここ|さささ|ししし)).*$ ABという単語をNGしたくてABCやDABEをNGしたくない場合どういう正規表現になりますか? >>66のこと?
でもこれって前か後ろの片方でもカタカナならNG回避されるよね?
両方指定したいんだけどどうすればいい? >>100 などの安価はNGせず
> の後の文字が数字以外の場合だけNGしたいのですが上手くできません
\dと(?!)を使いそうなことはわかるのですがどう組み立てて良いかわかりません 〜で終わる
ってテンプレにあった気がするんですがなくなりました? いくつか単語を決めてそのうち2つ以上入ってる文章をNGとかってできます? >>5
●本文に特定の文字列が含まれる、含まれない
(?#1行にA,Bが含まれる)(?=.*A)(?=.*B)
(?#複数行にA,Bが含まれる)(?=[\s\S]*A)(?=[\s\S]*B)
(?#1行にAが含まれBが含まれない)(?=.*A)(?!.*B)
(?#複数行にAが含まれBが含まれない)^(?=.*A)(?!.*B).*$
↑このあたりつかえばいけるっしょ 「2つ以上」はいけそうですね
「3つ以上」とか「4つ以上」とかはできますか? スレタイに改行してるやつの正規表現ってもう出てる?
https://i.imgur.com/ftkoNAO.png
クソうざくてかなわん >>219
俺も同じ質問しようと来た
(?#2行NG)(.*\n){2}
これで消えない? >>220-221
ありがとう
うーん消えない…
https://i.imgur.com/YBX9LuF.png
全体での設定
NGワード正規表現ってところでいいんだよね? >>222
スレ一覧の下にあるアイコンの真ん中のヤツを押す
NGスレッド設定を押す
NGスレッド(正規表現)を押す
\n を入れる >>224
おお!
そんなとこにもNG設定あったのか!
ごめんまじありがとうm(_ _)m ちゃんと板一覧でNGすれ設定に入れたのに(´・ω・`) 再起動かけて入れ直したら反映された(´・ω・`)
何だったんだろうサンクス 昔NGワードに入れてた(.*\n){8}がなんなのかわからないんですがわかる方いますか? >>230
\n は改行
{8} 8個
.と*はわからん >>233
良かれと思って言ったのになんだその言いぐさは
改行と8個で わかるかもしれんだろ
おまえは浅いな ■ このスレッドは過去ログ倉庫に格納されています