正規表現道場 Part2
【正規表現道場の掟】
・言語不問
・質問も大歓迎。使用言語を書くのを忘れずに。
正規表現と関係ない話・質問は他スレへどうぞ。
前スレ
正規表現道場
http://kohada.2ch.net/test/read.cgi/php/1168450843/ 数字とドットを判別する正規表現
^[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回避 頭にマイナス文字が来るのを忘れていました
URLは5chのNGワードにひっかかってるみたいで
すみません 直接の答えじゃなくてすまんけど。
正規表現で^は行の先頭を意味するけど、それは意図とあってる?
縦書きに紛れる数字って行の先頭とは限らないんじゃないかな。 一度に書けなくてすまん。
$も、あれは行末を意味するからそれも意図とあってるかな?
縦書きする日本語
数字部分
縦書きする日本語
という原稿なら俺のツッコミは余計なのでごめん。
逆に言うとそういう原稿じゃないと機能しないと思うよ。 >>333
^が行の一番目から数字かどうかを見ていたから
$が行末を見ていたから
下のは走らなかったんですね
文中の数字なので、そのご指摘であってます
初歩的な内容ですみません
とりあえず頭と尻を取ってみてみます
こんな過疎なのにありがとうございます /[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:??? 386 や 38.6 みたいな数字だけのも試しましたが
386 には無効で 38.6 は 38 と ピリオド と 6 とに分けられて効きました
正規表現よりスクリプトの中身の処理なのかもしれません
う〜ん いま手元に試せる環境ないけど、でもまだ環境を疑う前の状態、正規表現が完成してない状態だと思う。余裕あったら336の最後、試してみるね。 >>336
例文の328nobodyの328は必ず3桁? >>339
>>328 や >>330 の画像のように
必ず3桁とは限りませんですね
4桁以上のこともありますので >>341
プラスマイマスまで処理していただいて
ありがとうございます
システムのプログラムが本職ではないので
こういうのが苦手でした
正規表現処理としては合っているのですが
スクリプトは半角数字1〜2文字のみを処理するだけで
3桁数字もプラスもマイナスも小数点も駄目でした
本当にお手間をおかけしました
今回はあきらめてみます う〜ん…… 自分に対して「ガイジ」って言ってくる奴をNGみたいなの出来る? 無理だと思う。どのレス番が自分なのか予め分かってる必要があるけどそれが難しいんじゃないかな。 私たち日本人の、日本国憲法を改正しましょう。
総ム省の、『憲法改正國民投票法』、でググって
みてください。拡散も含め、お願い致します。 perlをphp化しようとしています。
perlの$`や$'のようなマッチの前後の文字列を取り出すことはできますか?
また、tr/A-Z/A-Z/のような変換は、変換則をいちいち配列で指定しないとできないのでしょうか。 >>346
後者は正規表現じゃなくてmb_convert_kanaじゃあかんの? スレ内のランダムで3回以上繰り返される同一の文章をNGできますか? 細かく説明するとスクリプトコピペ荒らしのコピペ内容が一定期間で変わってしまうというので困っています
V2Cの正規表現で似たもの見つけましたが、janeでは使えませんでした。
(?:^|\n)(.{5,}\n(.*\n){0,2})\1{3} Janeはdatは取得したそのままで何も加工しないので
改行は\nではなくて<br>となる
また、各行の先頭と末尾に半角空白が付加されている
実際にレスがどうなっているのかはdatを覗いてみるのが一番 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" ...>
の形にしたいのですが、どうすればよいでしょうか…?
「=」を含まないようにすればいいんだとは思いますが、なんだかごちゃごちゃするばかりでうまくいきませんでした。 その後色々試して見た結果
replace( /class=["\s]((.+)+)"/g, '.$1' )
とすることで
<table .aaa bbb ccc (略) border="1" ...>
の形にすることができました。
しかし、.aaa .bbb .ccc のように繰り返して「.」を付加する方法がわかりません。
おとなしく2回に分けて置換するほかないのでしょうか?
replace( /class="(.+\s)?(.+)(\s.+)?"/g, '.$2' )
…これだと1回しか置換できませんね… すいません質問させてください
専ブラアプリのchmateで連続投稿、連レスをNGに出来ませんか?
連続でなくても、同一IDで沢山書き込んでいるのをNGにしたいのです
毎日NGIDとして登録すれば済む話しなんですが‥
正規表現で一定数以上の書き込みをNGにしたいのです
よろしくお願いします 「あいう
えお」
『かきくけ
こ』
のような場合に改行を詰めたいのですが
^[」』](\r?\n)
を置換して消そうとしてもうまくいきませんでした
どうすれば詰めることができるでしょうか
(使用環境はAutoHotkeyです) >>354
違ってたらごめんだけど、^の後に何がきても的な指定が足りてないんちゃう?
行頭、ほにゃらら、」または』、改行
とするのがいいんじゃないかなぁと。 >>355
あ、^は行頭ではなく、[]内の否定でした…
」や』で終わってたらOK(置換しない)
」や』以外で終わってたら、改行コードを削除して詰める
という感じです
^(.+)[^」』]\r?\n
なんか違いますね…
試しにこれでやってみると
「あいう」
『えお』
「かきく
けこ」
が
「あいう」『えお』
「かきく
けこ」
になるので逆っぽい…
どうも[^]による否定ができていない気がします
一応、AutoHotKeyの正規表現でも[^]による否定はできるはずなんですけど 教えて下さい。
!と!に該当させたいけれど、!?と!?の場合は除外したい場合、
どのような正規表現になるでしょうか。 質問スレ2つもあるけどどっちかにまとめたほうがいいな
Regular Expression(正規表現) Part14
https://mevius.5ch.net/test/read.cgi/tech/1489511075/ アドレスを編集しているんですけど
:80だけ消してたとえば:8001,:6080とか
80が含まれる数字は残したいんですけどどうやればいいんでしょうか
さくらエディターつかってます PHPで改行以外の制御文字を空文字に置換したいと思い次のように書きました。
preg_replace( '/(?!\n)[\p{Cc}]/u' , '' , $ver );
この場合、否定先読みで\nを指定しているのですが、\rも指定した方が良いのでしょうか。
詳しい方、アドバイスをください。
よろしくお願いします。 そういえば\Rは\rや\nにマッチするって見かけたけど、間にある垂直タブや書式送りにもマッチするよな 鬼太郎実況スレに現れる軍オタ荒しはどうNGすればいいんでしょうか
荒らす個々の文が違うのでやってもやっても消えません GreasemonkeyのスクリプトでニコニコのコメントをNGにするため
正規表現がうまく適用できなくて
任意の文字列が4字以上連続
.{4,}
スクリプトのほうの問題ならあきらめます 「任意の一文字と複数のスペース」を3回以上繰り返す文に合致する正規表現
(.[[:blank:]]{2}){3}
で↓の文にヒットしてくれないんだけど理由分かる方いる?
や め ろ ー ! し ゅ ー く ん の が
画像のように他の文にはヒットしている
https://i.imgur.com/mMhnds9.jpg >>370
ありがとう
{2}を{2,}にしろってことだよね
上手く動きました! phpで掲示板を作っていてアンカーリンク作りたいと思い以下のように書きました
preg_replace("/>>([0-9]+)/","<a href=\"?res=\\1\"> >>\\1</a>",$text);
>>1など単発の場合は↑でできましたが、>>1,2,3や>>1,2,3,10-15とやりたい場合どうしたら良いですか? 5ch閲覧にrep2を利用しています。
文末に「>>1」が入っているレスを正規表現を利用してあぼーんしようとしました。
rep2だと行末に半角スペースが入るために
(>>1)\s$としたのですがうまくいきません。因みに「>>1」を他の日本語に変更すれば
期待通りの結果は得られるのですが。どの表に表現すれば良いのか教えて頂けないでしょうか。 上の質問をしたものです。
&gt;&gt;1<\/a>\s$ を半角で記述すれば目的を達成することができました。
お目汚し失礼しました。 chmateのNG設定で
複数のワードを全て含む書き込みをNG (?s:^(?=.*ワード1)(?=.*ワード2)(?=.*ワード3))
の ?s:^ と?=はどういう意味ですか? >>375
超いまさらだけど一応
?s:^は文章全体から検索するよって意味
?=は、ワードを含む(検索する時にマッチする)って意味
(?=あいう)だったら「あいう」があるレスがマッチする # h1
## h2
これにマッチする正規表現はどう書けばいいんでしょうか?
# h1にマッチさせたい場合、以下のようにしましたが、h2にもマッチします
# .*
h1のみ、h2のみにマッチさせる書き方はどうしたらいいのでしょうか PLAN
PLAN2
PLAN3
PLAN4
以上の4つを表す正規表現についてですが
^PLA(N|N[2-4])
で合ってますか? >>380
合ってるけど
^PLAN[2-4]?
でいいんじゃないか ところで、後ろはどうするんだ
PLAN5
とかでもPLANにマッチするけどいいのか スマホのブラウザ(Berry browser)での検索結果にでたYouTubeのリンクを
NEWPIPEで開くようにする正規表現をおしえていただけませんか? 正規表現ってこういうのも出来ますか?
あ い う え お
が「順不同」で「全て含まれている」のを検出
(1) ヒット例
ーーーーあいうえおーーーー
ーおーえーうーいーあーー
ーーーおあーーいいええーーう
(2) スルー例
ーあいうえーーーーー
ーおういあーーーーー
みたいなの1行の正規表現出来ますか? 複数文字列のANDの基本
^(?=.*文字列1)(?=.*文字列2)(?=.*文字列3)・・・ これで行けました >>375
ありがとうございます ^.{0,20}$
20文字以下の短文をNGにしたいんですけどアンカーが付いてるとスルーされてしまいます
どうやって改善したら良いですか? 基礎的なことですみません、一応調べてはみたのですが
JavaScriptで改行コードを消す場合
str.replace(/\r\n|\n|\r/g, '')
は理解できますが
str.replace(/[\r\n]/g, '')
ではだめでしょうか? ChMateのNG機能で、レス本文に順不同で含まれる "あ" に5回マッチさせる際の書き方を教えていただきたいのです
こんな↓感じの毎回微妙に違う意味のないレスをポイしたいのです
うあいうえああえあかあたま