正規表現道場 Part2

1nobodyさん2012/09/19(水) 18:58:43.51ID:bdgNsY2f
【正規表現道場の掟】

・言語不問

・質問も大歓迎。使用言語を書くのを忘れずに。

正規表現と関係ない話・質問は他スレへどうぞ。

前スレ
正規表現道場
http://kohada.2ch.net/test/read.cgi/php/1168450843/

265nobodyさん2017/01/17(火) 09:29:39.40ID:???
変数の後に数字つける方法がわからん
(\d\d) (\d\d) → \1\212345 →NG
(\d\d) (\d\d) → \1\2\x312345 →NG
先読み使えるの?
手元のエディタは変数の後数字が来るとバグる

266nobodyさん2017/01/17(火) 15:53:00.35ID:???
>>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となる

267nobodyさん2017/01/17(火) 16:04:16.64ID:???
>>266
ありがと
使ってたのはmfindだからPerl 5互換
コマンドプロンプトで高度な正規表現使えるソフトだったので

268nobodyさん2017/02/09(木) 17:46:47.19ID:N/9FjWal
すいません質問です
言語…sakuraeditor

↓次のような文章を小さい順に並べたい、この部分 (パイプABC001)
|ABC001
|の次は必ずアルファベットになります

・文章 (例)
カメラ|ABC001
レンズ|BCD005
バッテリー|CDV003|不良あり

269nobodyさん2017/02/09(木) 18:10:57.95ID:???
正規表現と関係ない話・質問は他スレへどうぞ。

270nobodyさん2017/03/27(月) 09:40:52.12ID:???
「|」←この縦棒の入力の仕方教えて
スマホでATOCでの入力方法が知りたいです
記号全部見たけど該当するのが見つけられませんでした

271nobodyさん2017/03/27(月) 18:25:24.06ID:XOJkSB5o
http://tamae.2ch.net/test/read.cgi/php/1348048723/270
ブクマしてコピペ
or辞書登録

272nobodyさん2017/03/28(火) 00:50:00.78ID:???

273nobodyさん2017/04/05(水) 21:00:53.79ID:???
教えて下さい!!
テキストデータにある電話番号部分を消したいのですがどのようにしたらいいでしょうか?

氏名 3桁の市内局番 ハイフン 4桁の番号 住所

というデータです。
テキストエディタを使って正規表現でハイフン付きの電話番号部分だけを消したいのです。
よろしくお願いします。

274nobodyさん2017/04/06(木) 05:24:35.99ID:???
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);

275nobodyさん2017/04/08(土) 12:41:40.82ID:???
>>273
(\d{3})-(\d{4})

276nobodyさん2017/04/11(火) 18:43:36.70ID:LhfrERPJ
バルタン星人

277nobodyさん2017/04/17(月) 07:46:01.71ID:???
>>276
なんなんな?

278nobodyさん2017/05/11(木) 12:35:34.54ID:fXvBVhsh
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;

279nobodyさん2017/05/12(金) 03:53:26.98ID:???
公開された、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 ) { データなし }

280nobodyさん2017/05/12(金) 09:26:14.69ID:???
>>278
もう少しシンプルに書けないのか?

281nobodyさん2017/05/14(日) 02:53:30.34ID:???
プログラム板の正規表現スレの方が、人が多いよ

282nobodyさん2017/07/26(水) 01:43:48.94ID:s1YLZ8fV
!で始まる行を除く半角英数字を正規表現で記述することはできますか?
否定先読みを使ってもうまくいきませんでした

283nobodyさん2017/07/26(水) 11:12:08.48ID:???
>>282
どんなパターンを書いたの?

284nobodyさん2017/07/26(水) 15:45:24.14ID:armondin
>>283
素人考えで下記のようにしてみました
(?!^!.*\n)[!-~&#165;]

素養がないので質問をすること自体が恐縮ではありますが
ご教授いただければと思います

285nobodyさん2017/07/27(木) 01:15:09.81ID:???
プログラム板の正規表現スレの方が、人が多い。
そっちへ書き込んだら?

半角英数字は、文字クラスで、簡単に表現できそう

286nobodyさん2017/07/27(木) 01:16:54.60ID:???
問題は具体例がないから何を対象として或いは対象としたくないのかが分からんということだ

287nobodyさん2017/07/27(木) 03:55:30.32ID:???
そもそも半角英数字には、! は含まれていないから、

^[A-Za-z0-9]+$

288nobodyさん2017/09/06(水) 06:09:02.89ID:???
ABCとDEF という単語を両方含むレスをNGにする事はできますか?

ABCだけが含まれるレスとDEFだけが含まれるレスはNGにせず、両方含まれる場合だけNGにしたいです

289nobodyさん2017/09/06(水) 08:34:30.55ID:???
できます

290nobodyさん2017/09/06(水) 08:38:08.44ID:???
教えてくださいw
ググっても見つかりませんでした

291nobodyさん2017/09/14(木) 16:08:53.99ID:???
自己解決した

292nobodyさん2017/10/09(月) 10:09:23.76ID:???
yo

293nobodyさん2017/12/30(土) 12:30:39.98ID:YhlYw6jg
誰でも簡単にネットで稼げる方法など
参考までに、
⇒ 『半藤のブブイウイウレレ』 というサイトで見ることができます。

グーグル検索⇒『半藤のブブイウイウレレ』

A4BHVWGZK8

294nobodyさん2018/01/02(火) 22:49:41.24ID:???
http://egg.5ch.net/test/read.cgi/applism/1509549074/800
このような、本文に何もないレスを非表示NGにしたいのですが、^$でも^\n$でも対処が出来ず。
…と言うより、一体どう投稿したのかさっぱり分からず…試しに任意の1文字を含む本文をNGにしても効果なく、ならば任意の1文字を含まない本文を…も効果なく、まるで正規表現のNGWordを一切受け付けない感じなのですが、なにか方法がありますでしょうか?

295nobodyさん2018/01/02(火) 23:12:45.68ID:???
>>294
あと、正規表現を使わずに文字列で

をNGWordにしたところ、本文無しレスが1つと、多数の普通のレスが巻き添えで消えてしまいました。
消えずに残った、連投された本文無しレスのしぶとさと言ったらもう…。

296nobodyさん2018/01/02(火) 23:46:55.52ID:???
環境は?

297nobodyさん2018/01/03(水) 00:57:25.66ID:???
とりあえずJaneStyleで動いたやつ

^(?i:<br(?: ?/)?>|\s|&#(?:x[0-9a-fA-F]+|[0-9]+);| )*$

本文中に数値参照入ってるから面倒なんだな

298nobodyさん2018/01/03(水) 05:47:04.96ID:???
>>296,297
レスありがとうございます!
ああっ、すみません!
使ってるのはChMateです。

299nobodyさん2018/01/03(水) 07:13:21.02ID:???
>>297
せっかく教えて頂いたのに肝心な環境をお伝えしてなくて申し訳ありません。
スマホのAndroid 8でChMateと言う専ブラを使ってます。
お教え頂いた正規表現自体は入力エラーになりませんでしたが、効果はありませんでした。

300nobodyさん2018/01/03(水) 17:37:30.39ID:???
2chmateだと環境無いし分からんな
改行の表現あたり直せば動くんじゃなかろか

301nobodyさん2018/01/03(水) 19:10:15.22ID:???
>>300
レスありがとうございます。
本文中に数値参照入ってる…と言う事は、私からは本文が見えないだけで、本当は何らかの本文があるんですね。
もう少しググってみて手掛かりを探してみます。
ありがとうございました。

302nobodyさん2018/01/03(水) 21:04:10.98ID:???
>>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

303nobodyさん2018/01/03(水) 23:41:36.34ID:???
>>302
レスありがとうございます。
そこまで親身になって頂いてとても嬉しく思います。
ですが、全てのパターンで試してみたものの、無情にも効果がありませんでした…。
ChMateはレスを長押しでNGに登録出来る機能もあるのですが、普通なら
http://imgur.com/4eGdel7.png
こんな風にNGWordを選択出来るのですが、あのレスでそれをすると
http://imgur.com/pJn3HBT.png
なんと選択肢からNGWordが消えてしまうという…。
これはもう、ChMateがNGWord出来ないレスですよと判断しているようなモノだと思って、諦めることにします。
とても参考になる解説まで教えて下さってありがとうございました。

304nobodyさん2018/01/19(金) 18:59:57.48ID:???
ツイッターのハッシュタグ抽出したいんだけど、おすすめの正規表現教えてください

305nobodyさん2018/01/20(土) 00:16:46.32ID:???
>>304
>>1
> ・質問も大歓迎。使用言語を書くのを忘れずに。

306nobodyさん2018/01/20(土) 07:49:13.92ID:???
正規表現の用語の英和対訳表みたいなのあったら教えてください
詳説正規表現(中古で買った第2版)読んでるんだけど、前後読み、先読み、後読みとういう用語で絵混乱しました。
というのは、例えば
日本語訳の、「前後読みの一つである先読みは」は原文では、
One type of lookaround, called lookahead
になってます。
look aheadの意味はweblioによると
(1) 前方を見る.
(2) 未来のことを考える; 将来に備える.
となってるので、
時系列の後先を意味する「先読み」ではなく、方向を示す「前方読み」だと分かってれば理解しやすいのに、と思ったからです。

307nobodyさん2018/01/20(土) 09:08:33.18ID:???
>>305
php です

308nobodyさん2018/02/20(火) 04:41:01.19ID:???
☆ 日本の、改憲を行いましょう。現在、衆議員と参議院の
両院で、改憲議員が3分の2を超えております。
『憲法改正国民投票法』、でググってみてください。国会の発議は
すでに可能です。平和は勝ち取るものです。お願い致します。☆☆

309nobodyさん2018/03/18(日) 20:22:37.68ID:aTbB2ZjF
言語は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');//除外サイト

310nobodyさん2018/03/18(日) 20:37:39.93ID:???
>>309
var ph = java.util.regex.Pattern.compile('(?!.*(youtube))ttps?([-_.!~*\'()a-zA-Z0-9;:\@&=+\$,%#/]+)\\?');
これにしたら出来ました

311nobodyさん2018/05/03(木) 16:48:58.62ID:???
1つにまとめるのが必ずしもいいとは限りませんよ
処理スピードは確実に遅いですそれ..
正規表現の否定は難しいので正規表現に不慣れならなるべく避けたほうが無難です

312nobodyさん2018/05/18(金) 22:39:09.13ID:???
Perl 5互換の正規表現エンジンで、

ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz
0123456789
This is a pen.

これを

"ABCDEFGHIJKLMNOPQRSTUVWXYZ"|abcdefghijklmnopqrstuvwxyz
0123456789
This is a pen.

としたいのですがどうすればいいのでしょうか?
gオプションを外せば「[\r\n]」で初回の改行のみにマッチできるんですが
それができないツールなので指定できません
他の方法で初回の改行だけにマッチさせる方法を教えてもらえないでしょうか
よろしくおねがいします

313nobodyさん2018/05/19(土) 00:09:58.17ID:???
シングルラインモードで改行文字除外して先頭からマッチすればいいんじゃねーの?

/^([^\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

314nobodyさん2018/05/19(土) 00:12:14.32ID:???
あ, 開始デリミタあったな, マルチラインモードでもこれでいいや

/\A([^\x0A\x0D]+)(?:\x0D\x0A|[\x0A\x0D])/"$1"|/gm
https://regex101.com/r/TW7wpm/3

315nobodyさん2018/05/19(土) 00:49:41.52ID:???
>>314
完璧に動作しました。
助かりました。

https://regex101.com/で試していたのですが
結果までリアルタイムに見れることも気づいてませんでした
本当にありがとうございました。

新着レスの表示
レスを投稿する