正規表現道場 Part2
【正規表現道場の掟】
・言語不問
・質問も大歓迎。使用言語を書くのを忘れずに。
正規表現と関係ない話・質問は他スレへどうぞ。
前スレ
正規表現道場
http://kohada.2ch.net/test/read.cgi/php/1168450843/ 緊急ダイヤル系は無視して構いませんって、つまりそれが何だか含めた電話番号とは何ぞやを
考慮して回答しろって書いてあるじゃねーか。
しるかそんなモン。 >>240
ありがとうございます!
参考にしてみます データから例をあげないと書きようがないよね
ハイフンあったりなかったり、それら含めて全部なのか・・・ 1.文字列の末尾にある数字を1〜2桁まで抽出したい(末尾に1文字までなら数字以外が入っても構わない)
2.抽出した数字が1桁の場合は先頭に「0」を足して二桁に変えたい
これを正規表現1行で行いたいのですが
検索:.*?(\d{1,2})(\D{0,1})$
置換:\1
これで1つ目はいけたんですが、さらに2つ目の内容を正規表現1行で行うことは可能でしょうか? >>244
しっかり纏められて助かります^^b ありがとう! > \G 直前の一致文字列の末尾
こう覚えちゃう人多いんだよねぇ。こういうサイトが嘘広めてるんだろうな。 お前はいったい何なんだ?
必死に勉強したわけでもなく、必死に働いたわけでもなく
何も築かず、耐えず、乗り越えず、ただダラダラ過ごし
自分の都合の良い妄想だけを垂れ流す。
お前は今のゴミみたいな人生を、今は仮、本当の自分を使っていないだけ
そう飽きず言い続け、結局はそのまま死ぬ
最底辺キモヲタで底辺人生の今が本物であることに、そろそろ気が付こうぜ! 改行や余計な文字が入ってる場合のNGはどう書けば良いでしょうか?
例です
V
i からきますた!
p
この[V∨vv]→[IIii]→[PPpp]→NGを完成させたいです [V∨vv][^IIii]*[IIii][^PPpp]*[PPpp]
尚、テストはしてない >>253
出来ました!
ありがとうございます!
何故出来たかよく分かんないので研究します! 青空にある文章で章ごとに一、二・・・百八十三と数字
がついているのですが、それを一括して置換するにはどうすれば
いいでしょうか?漢数字の間には改行がついています。 質問よろしいでしょうか?
一文字のみのレスを正規表現で指定するにはどうすればよいでしょうか マ イ ン ド コ ン ト ロ ー ル の手法
・沢山の人が、偏った意見を一貫して支持する
偏った意見でも、集団の中でその意見が信じられていれば、自分の考え方は間違っているのか、等と思わせる手法
・不利な質問をさせなくしたり、不利な質問には答えない、スルーする
誰にも質問や反論をさせないことにより、誰もが皆、疑いなど無いんだと信じ込ませる手法
偏った思想や考え方に染まっていたり、常識が通じない人間は、頭が悪いフリをしているカルト工作員の可能性が高い
靖 国 参 拝、皇 族、国 旗 国 歌、神 社 神 道を嫌う カ ル ト
10人に一人は カ ル ト か 外 国 人
「ガ ス ラ イ テ ィ ン グ」 で 検 索 を !,,,, 「ちな」をNGにしたいけど、「ありがちな」や「ちなみに」はNG対象外としたい
ちな(!?み)
これで「ちなみに」は対象外にできたんだが、「ありがちな」も同時に対象外にするにはどうしたらいい? 「ちなみに」の略として「ちな」を使ってるのを想定してるとゲスパーするが、
「ちな」を含む言葉なんて沢山あるから、それらを考慮し始めるとキリが無い
行頭にある場合とかで妥協しときなせ >>261
ご明察
100%問題なくNGにできるとは思ってなくて、NGの誤爆が減ればいいなって感じで質問してみた
そもそも、 "AB" には一致して "xyAB" には一致しない正規表現って書けるんだろうか
俺の実力じゃよく分からんかった >>262
否定後読み(戻り読み)
(jscriptには無いので使用環境によっては使えないことに注意) >>263
おー、サンクス
>>259の課題はこれでいけた、Janeで一応動いてるっぽい(>>259のは書式間違ってたねすまん)
(?<!が)ちな(?!み)
誤爆が見つかったら"|"使って地道に誤爆減らしてる 変数の後に数字つける方法がわからん
(\d\d) (\d\d) → \1\212345 →NG
(\d\d) (\d\d) → \1\2\x312345 →NG
先読み使えるの?
手元のエディタは変数の後数字が来るとバグる >>265
どういう環境なのか知らんので一般的な回答だけど
正規表現内の後方参照では、\1,\2の替わりに\k<1>,\k<2>(または\k'1', \k'2')と書ける
$1,$2の場合は、${1},${2}と書ける(jscriptの場合は、$01,$02とする)
【例】
文字列: 112
正規表現:^(\d)\k<1>2 (またはキャプチャの括弧を使って ^(\d)(\1)2 としても良い)
部分文字列の参照:${1}2 (jscriptなら$012) で、12となる >>266
ありがと
使ってたのはmfindだからPerl 5互換
コマンドプロンプトで高度な正規表現使えるソフトだったので すいません質問です
言語…sakuraeditor
↓次のような文章を小さい順に並べたい、この部分 (パイプABC001)
|ABC001
|の次は必ずアルファベットになります
・文章 (例)
カメラ|ABC001
レンズ|BCD005
バッテリー|CDV003|不良あり
… 「|」←この縦棒の入力の仕方教えて
スマホでATOCでの入力方法が知りたいです
記号全部見たけど該当するのが見つけられませんでした 教えて下さい!!
テキストデータにある電話番号部分を消したいのですがどのようにしたらいいでしょうか?
氏名 3桁の市内局番 ハイフン 4桁の番号 住所
というデータです。
テキストエディタを使って正規表現でハイフン付きの電話番号部分だけを消したいのです。
よろしくお願いします。 JavaScriptで作った。
空白は半角空白のことです。
「空白数字3つ空白-空白数字4つ空白」の部分を、1つの半角空白に置換する。
もし違っているなら、データの入出力を、正確に書いてくれ
入力
東京太郎 123 - 4567 東京都なんたら
大阪次郎 123 - 4567 大阪府なんたら
出力
東京太郎 東京都なんたら
大阪次郎 大阪府なんたら
var str = "東京太郎 123 - 4567 東京都なんたら" + "\n" +
"大阪次郎 123 - 4567 大阪府なんたら"
var str2 = str.replace(/ \d{3} \- \d{4} /g, " ");
console.log(str2); Google Apps Scriptなんですが
ここの時系列データ(日付〜出来高まで)抽出したいのだけど、上手くいきません。
ttps://jp.investing.com/indices/vn-historical-data
var myRe = /<td.*>(\d{1,2}月\d{1,2}日\d{4}年)<\/td><td.*>([\d,]+(\.\d+)?)<\/td><td>([\d,]+(\.\d+)?)<\/td>
<td>([\d,]+(\.\d+)?)<\/td><td>([\d,]+(\.\d+)?)<\/td><td.*>([\d,]+(\.\d+)?)k<\/td>/g; 公開された、APIを使えば?
公開されていないのなら、jQuery などで、抜き出せばいい
id が、results_box で、その子孫の<td> なら「#results_box td」
var tmp_id = "results_box";
var selector = "#" + tmp_id + " td";
console.log('selector = ' + selector);
var jqObj = $(data).find( selector );
console.log('jqObj.length = ' + jqObj.length, '\n', jqObj);
if ( 0 === jqObj.length ) { データなし } !で始まる行を除く半角英数字を正規表現で記述することはできますか?
否定先読みを使ってもうまくいきませんでした >>283
素人考えで下記のようにしてみました
(?!^!.*\n)[!-~¥]
素養がないので質問をすること自体が恐縮ではありますが
ご教授いただければと思います プログラム板の正規表現スレの方が、人が多い。
そっちへ書き込んだら?
半角英数字は、文字クラスで、簡単に表現できそう 問題は具体例がないから何を対象として或いは対象としたくないのかが分からんということだ そもそも半角英数字には、! は含まれていないから、
^[A-Za-z0-9]+$ ABCとDEF という単語を両方含むレスをNGにする事はできますか?
ABCだけが含まれるレスとDEFだけが含まれるレスはNGにせず、両方含まれる場合だけNGにしたいです 誰でも簡単にネットで稼げる方法など
参考までに、
⇒ 『半藤のブブイウイウレレ』 というサイトで見ることができます。
グーグル検索⇒『半藤のブブイウイウレレ』
A4BHVWGZK8 http://egg.5ch.net/test/read.cgi/applism/1509549074/800
このような、本文に何もないレスを非表示NGにしたいのですが、^$でも^\n$でも対処が出来ず。
…と言うより、一体どう投稿したのかさっぱり分からず…試しに任意の1文字を含む本文をNGにしても効果なく、ならば任意の1文字を含まない本文を…も効果なく、まるで正規表現のNGWordを一切受け付けない感じなのですが、なにか方法がありますでしょうか? >>294
あと、正規表現を使わずに文字列で
をNGWordにしたところ、本文無しレスが1つと、多数の普通のレスが巻き添えで消えてしまいました。
消えずに残った、連投された本文無しレスのしぶとさと言ったらもう…。 とりあえずJaneStyleで動いたやつ
^(?i:<br(?: ?/)?>|\s|&#(?:x[0-9a-fA-F]+|[0-9]+);| )*$
本文中に数値参照入ってるから面倒なんだな >>296,297
レスありがとうございます!
ああっ、すみません!
使ってるのはChMateです。 >>297
せっかく教えて頂いたのに肝心な環境をお伝えしてなくて申し訳ありません。
スマホのAndroid 8でChMateと言う専ブラを使ってます。
お教え頂いた正規表現自体は入力エラーになりませんでしたが、効果はありませんでした。 2chmateだと環境無いし分からんな
改行の表現あたり直せば動くんじゃなかろか >>300
レスありがとうございます。
本文中に数値参照入ってる…と言う事は、私からは本文が見えないだけで、本当は何らかの本文があるんですね。
もう少しググってみて手掛かりを探してみます。
ありがとうございました。 >>301
>>297で改行コードが<br>じゃなく\nでも、800は消えると思うんだが
これで消えないとすると、(?i:)が解釈できないのかもしれない
5chのdat上は、改行は<br>しかあり得ないのでもっと簡略に書いてもいいし
文字参照の16進表記は無効なのでこれも必要ない
^(<br>|\s|&#[0-9]+;| )*$
これでダメなら、<br>のかわりに[\n\r]を書けばいい
ところで、くだんのレスには、半角空白が文字参照で書かれているわけ
&#32; (実際には&は半角の&)
5chで空白文字は、
&#32; &#160; &#8194; &#8195; &#8201; &#8203; &#12288;
したらばで空白文字は
&nbsp; &ensp; &emsp; &thinsp; &#160; &#8194; &#8195; &#8201; &#8203;
なおしたらばで中身の無いレスは上記の表現では何故かNGできない(^$ならOK)
http://jbbs.shitaraba.net/bbs/read.cgi/internet/8173/1426610041/659 >>302
レスありがとうございます。
そこまで親身になって頂いてとても嬉しく思います。
ですが、全てのパターンで試してみたものの、無情にも効果がありませんでした…。
ChMateはレスを長押しでNGに登録出来る機能もあるのですが、普通なら
http://imgur.com/4eGdel7.png
こんな風にNGWordを選択出来るのですが、あのレスでそれをすると
http://imgur.com/pJn3HBT.png
なんと選択肢からNGWordが消えてしまうという…。
これはもう、ChMateがNGWord出来ないレスですよと判断しているようなモノだと思って、諦めることにします。
とても参考になる解説まで教えて下さってありがとうございました。 ツイッターのハッシュタグ抽出したいんだけど、おすすめの正規表現教えてください >>304
>>1
> ・質問も大歓迎。使用言語を書くのを忘れずに。 正規表現の用語の英和対訳表みたいなのあったら教えてください
詳説正規表現(中古で買った第2版)読んでるんだけど、前後読み、先読み、後読みとういう用語で絵混乱しました。
というのは、例えば
日本語訳の、「前後読みの一つである先読みは」は原文では、
One type of lookaround, called lookahead
になってます。
look aheadの意味はweblioによると
(1) 前方を見る.
(2) 未来のことを考える; 将来に備える.
となってるので、
時系列の後先を意味する「先読み」ではなく、方向を示す「前方読み」だと分かってれば理解しやすいのに、と思ったからです。 ☆ 日本の、改憲を行いましょう。現在、衆議員と参議院の
両院で、改憲議員が3分の2を超えております。
『憲法改正国民投票法』、でググってみてください。国会の発議は
すでに可能です。平和は勝ち取るものです。お願い致します。☆☆ 言語はjavascriptですがjavaの処理を借りて使ってるみたいです
やりたいことは
「V2Cの書き込み時、URLに?があったら警告を出したいが、Youtubeサイトだけは除外したい場合」
正規表現でどう書けばいいかわからないので
&&条件にして回避しましたが1つの正規表現で可能ですか?
ソースはこれです
var ph = java.util.regex.Pattern.compile('ttps?([-_.!~*\'()a-zA-Z0-9;:\@&=+\$,%#/]+)\\?');
var ph2 = java.util.regex.Pattern.compile('youtube');//除外サイト >>309
var ph = java.util.regex.Pattern.compile('(?!.*(youtube))ttps?([-_.!~*\'()a-zA-Z0-9;:\@&=+\$,%#/]+)\\?');
これにしたら出来ました 1つにまとめるのが必ずしもいいとは限りませんよ
処理スピードは確実に遅いですそれ..
正規表現の否定は難しいので正規表現に不慣れならなるべく避けたほうが無難です Perl 5互換の正規表現エンジンで、
ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz
0123456789
This is a pen.
これを
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"|abcdefghijklmnopqrstuvwxyz
0123456789
This is a pen.
としたいのですがどうすればいいのでしょうか?
gオプションを外せば「[\r\n]」で初回の改行のみにマッチできるんですが
それができないツールなので指定できません
他の方法で初回の改行だけにマッチさせる方法を教えてもらえないでしょうか
よろしくおねがいします シングルラインモードで改行文字除外して先頭からマッチすればいいんじゃねーの?
/^([^\x0A\x0D]+)(?:\x0D\x0A|[\x0A\x0D])/"$1"|/g
https://regex101.com/r/TW7wpm/2
マルチラインモードしかダメってんなら
/^((?:(?<!\x0A|\x0D).)+)(?:\x0D\x0A|[\x0A\x0D])/"$1"|/gm
https://regex101.com/r/TW7wpm/1 あ, 開始デリミタあったな, マルチラインモードでもこれでいいや
/\A([^\x0A\x0D]+)(?:\x0D\x0A|[\x0A\x0D])/"$1"|/gm
https://regex101.com/r/TW7wpm/3 >>314
完璧に動作しました。
助かりました。
https://regex101.com/で試していたのですが
結果までリアルタイムに見れることも気づいてませんでした
本当にありがとうございました。 教えてください
日付を処理するにあたり
2018-07-09 もしくは 7-9-18
のどちらがきても$1月$2日を7月9日にしたいと思っています。年は不要。
(?:20[12][0-9]-0?)?(1?[0-9])-0?([123]?[0-9])(?:-[12][0-9])?
で一応うごいてるのですが、もっとスマートにできますでしょうか? PHPで一番最後のカギカッコとその先を消したい時
$text = 'あいうえお「かきくけこ」「さしすせそ」たちつてと';
↓
$text = 'あいうえお「かきくけこ」';
$text = preg_replace("/「[^「」]*」.*/","",$text);
では元の文字列のまま返されます。
しかし、さしすせそ の部分を sasisuseso にすると成功します。何が問題なのでしょうか? >>316
そもそも処理自体が正規表現に向いてないと思うんですけど
>>317
それ全然ダメでしょ
*はgreedyだから最初にマッチした括弧以降全部食う
あとPHPならuオプション使うべき
/(「[^「」]*」)(?:(?!(?1)).)*$/
https://regex101.com/r/AKpqav/2
何か正規表現でももっと賢い方法ありそうだけど思い浮かばなかった >>318
ありがとうございます。半分くらいしか分かりませんがうまくいきました。
$text = preg_replace("/(「[^「」]*」)(?:(?!(?1)).)*$/su","",$text); txtファイルで20文字目で改行したいのです。
20文字目で改行コードを挿入すればいいのかなと思ったのですが、
書き方がわかりません。
よろしければどなたか教えてください。 >>322
レスありがとうございます。
説明が足りず申し訳ありません。
例えばなんですが、秀丸エディタのような正規表現の置換に対応したテキストエディタで
<置換前>
あいうえおかきくけこさしすせそ
たちつてとなにぬねのはひふへほ
<置換後>
あいうえお
かきくけこ
さしすせそ
たちつてと
なにぬねの
はひふへほ
これは5文字目で改行させた場合の例ですが、これを20文字目で改行させたいということなんです。
で、<置換前><置換後>に正規表現でどのように書けばいいのかということなんですが、いかがでしょう? >>323
秀丸 タグ付き正規表現
で検索するといいかも? >>324
検索してみたら、そのものずばりがありました。
【秀丸エディタ】正規表現を用いて指定文字数で改行させる方法
https://nodoame.net/archives/4675
どうもありがとうございました。 書き込めないテスト
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
数字とドットを判別する正規表現
^[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の最後、試してみるね。