[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 05/20 09:57 / Filesize : 293 KB / Number-of Response : 1056
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Regular Expression(正規表現) Part15



1 名前:デフォルトの名無しさん [2019/09/16(月) 22:25:11.87 ID:enU8we0d.net]
Regular Expressionスレです。

質問する場合は必ず実装言語や処理系ソフトウェア名を示してください。

前スレ
Regular Expression(正規表現) Part14
https://mevius.5ch.net/test/read.cgi/tech/1489511075/


次スレは>>980宜しく
天ぷら等>>2以降

2 名前:デフォルトの名無しさん mailto:sage [2019/09/16(月) 22:25:47.75 ID:enU8we0d.net]
スルーされにくい質問のテンプレと例

●Regular Expressionの使用環境
Java1.5

●検索か置換か?
検索

●説明
各行の1番目のAまでを検索したい

●対象データ
ABCA
BCAA
CABA

●希望する結果
ABCA
^
BCAA
^^^
CABA
^^

※ ^ はアンダーラインだそうな ^^;

3 名前:デフォルトの名無しさん mailto:sage [2019/09/16(月) 22:45:50.99 ID:UVYTIEdn.net]
◆関連サイト
正規表現メモ
www.kt.rim.or.jp/~kbk/regex/regex.html
Perl正規表現雑技
www.din.or.jp/~ohzaki/regex.htm

詳説 正規表現
www.oreilly.co.jp/books/9784873113593/
正規表現クックブック
www.oreilly.co.jp/books/9784873114507/

正規表現プログラミングFAQ
capslockabcjp.kitunebi.com/faq.html

.NET Framework の正規表現 | Microsoft Docs
https://docs.microsoft.com/ja-jp/dotnet/standard/base-types/regular-expressions
正規表現 - JavaScript | MDN
https://developer.mozilla.org/ja/docs/Web/JavaScript/Guide/Regular_Expressions

鬼車
www.geocities.jp/kosako3/oniguruma/index_ja.html
鬼雲
https://github.com/k-takata/Onigmo
Boost.Regex 1.45.0 (日本語訳)
alpha.sourceforge.jp/devel/boost.regex_ja_1_45_0.pdf

秀丸: 複数行にまたがる検索について
homepage2.nifty.com/jr-kun/hidemaru_qa/4_regulr.html#RETURNS

サクラエディタ: 改行
d.hatena.ne.jp/myokoym/20101219/1292779058
※ サクラエディタでは複数行に渡る検索・置換は出来ません。

4 名前:デフォルトの名無しさん mailto:sage [2019/09/17(火) 01:53:27.68 ID:JrU+31ml.net]
正規表現技術入門
https://gihyo.jp/book/2015/978-4-7741-7270-5

↑の著者の一人であり Onigmo の作者でもあるtakata先生のツイ
https://twitter.com/k_takata
(deleted an unsolicited ad)

5 名前:デフォルトの名無しさん mailto:sage [2019/09/17(火) 07:00:40.77 ID:Au9Vzrnr.net]
>>1-2


6 名前:デフォルトの名無しさん mailto:sage [2019/09/21(土) 18:08:57.67 ID:oqO8j0PL.net]
●Regular Expressionの使用環境 
サクラエディタ bregoning.dll ver 3.06という記載があります

●検索か置換か? 
置換

●説明 
うしろに数字を付けたい。


というのを
/(^.*)/$1/ で置き換えると

になります(変わらない)。
これを、あ→あ00にするために
/(^.*)/$100/ とはできません。

$1等の直後に、数字を付け足すためにはどのように
表現したらよいか教えてください。

元の行の末尾に付け足すとは限らないので、
$1(実際はもっと多いのですが・・)の直後に数字を付け足す方法をお教えください。

7 名前:デフォルトの名無しさん mailto:sage [2019/09/21(土) 19:27:26.83 ID:3YukOVDp.net]
>>6
/(^.*)/${1}00/
https://sakura-editor.github.io/help/HLP000089.html

8 名前:デフォルトの名無しさん mailto:sage [2019/09/21(土) 20:16:26.14 ID:oqO8j0PL.net]
>>7
ありがとうございます。
ヘルプを見るという基本がなってませんでした
もうしわけありません。

9 名前:デフォルトの名無しさん [2019/10/03(木) 17:59:43.15 ID:WLIOnQPh.net]
正規表現クロスワードパズル。めっちゃおもろいww
https://regexcrossword.com/

10 名前:デフォルトの名無しさん mailto:sage [2019/10/03(木) 22:01:07.23 ID:ArP3YJIm.net]
解き方がわかんねぇ・・・

https://regexcrossword.com/challenges/beginner/puzzles/1

[^SPEAK]+
HE|LL|O+

が交わるマスがなんで、Hになるんだ



11 名前:デフォルトの名無しさん mailto:sage [2019/10/03(木) 22:18:27.45 ID:gZNTfFgd.net]
クロスワードの基本ルールと同様に各マス1文字だが、通常と異なり各ラインが単語になるとは限らない
縦のラインを横ラインをそれぞれ検索対象のテキストと見做して両方がマッチすればOK
ちなみに1回で1ライン全てにマッチする必要は無くて複数回検索して全マスにマッチする形でも良いみたい

12 名前:デフォルトの名無しさん mailto:sage [2019/10/03(木) 22:25:40.75 ID:TCa0Rrk0.net]
>>10
まず
EP|IP|EF
の列を埋めてみよう。

13 名前:デフォルトの名無しさん mailto:sage [2019/10/03(木) 22:54:32.85 ID:ArP3YJIm.net]
>>11
>>12

ありがと。わかったわ。

>縦のラインを横ラインをそれぞれ検索対象のテキストと見做して両方がマッチすればOK

クロスワードって考え方がスポーンと抜けてた。
枠外にある正規表現を、「縦のヒント」「横のヒント」としてみなすわけね。

for i in A B C D E F G H I J K L M N O P Q R S T U V W X Y Z;
do echo $i | egrep "縦条件" | egrep "横条件" #縦横逆も可
done;

的な考え方をしてたわ・・・

14 名前:デフォルトの名無しさん mailto:sage [2019/10/04(金) 23:39:05.24 ID:FCfJ1C/v.net]
全制覇した。疲れた。本来はもっとのんびり楽しむものだよな。

15 名前:デフォルトの名無しさん [2019/10/05(土) 09:26:56.80 ID:oVPf95FK.net]
すげえ!高難易度のやつ歯が立たないわ

16 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 16:01:21.83 ID:8eaxbCO5.net]
https://regexcrossword.com/playerpuzzles/59e565c95008d

これとか解けるのは人間ではないと思うわ

17 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 16:35:39.41 ID:+ss/CUcr.net]
アカウント持ってないから login はできないけど
自分が解いた結果はまだ見られるな。
クッキーを削除したら見られなくなるんだろうか。

18 名前:デフォルトの名無しさん [2019/10/05(土) 16:44:21.25 ID:0WeqN8Y0.net]
>>16
なんじゃこりゃwww
本末転倒だけどこれ数独ソルバーみたいにコンピューターに解かせられんの?

19 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 23:37:56.24 ID:rOar3xCR.net]
テキストエディタで試したら全27ラインマッチする状態になってるのに正解にならんなあ

20 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 00:08:45.90 ID:IBgflZCa.net]
どうもブラウザのせいだったようで、同じ内容を普段使ってないChromeで試したら正解扱いになった、よかった

作った人は凄いけど、解くのは1個1個できるところから埋め、条件を少しずつ絞りこんで行けば案外見た目ほど難しくはない
正規表現の可変長の書式の影響でクロスワードよりピクロスを解く感覚に似てる気がするのでその辺やってた人はちょっと有利かも
あと記憶力に余程の自身がなければ、ちょっと大きめに印刷して各マスに細かい条件を書きながらやったら大分楽になると思う



21 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 12:02:16.89 ID:ONMi4OJn.net]
●Regular Expressionの使用環境
※テキスト(csv)を成型するという目的なので、なんでもいいです。
 フリー(ネットからDL可能)なものであれば環境を作ります。

●検索か置換か?
置換

●説明
csvファイルの第4フィールドに説明文的なものが入ってます。
ここに半角カンマが紛れています。これを全角文字(、)に置き換えたい。
第4フィールドにいくつカンマがあるかは不定です。(0の場合もあれば、2個、3個、場合によっては10個、それ以上など)
第4フィールド以外は種類は多いのですが特定の文字が入ります。また第4フィールド以外はカンマは入っていません。
各行のフィールド数は固定です。(実際は20フィールドあるのですが、省略のため5フィールドにしてます)

●対象データ
Field1,Field2,Field3,ここは説明文,Field5
Field1,Field2,Field3,説明文です,Field5
Field1,Field2,Field3,ここは説明文,ですよ,Field5
Field1,Field2,Field3,説明してる,フィールドですよ,Field5

●希望する結果
Field1,Field2,Field3,ここは説明文,Field5
Field1,Field2,Field3,説明文です,Field5
Field1,Field2,Field3,ここは説明文、ですよ,Field5
Field1,Field2,Field3,説明してる、フィールドですよ,Field5

よろしくお願いいたします。

22 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 13:19:25.82 ID:MVlRtd/O.net]
3つ目の,以降から,field5までの間をキャプチャ

23 名前:ナ良さそう。 []
[ここ壊れてます]

24 名前:デフォルトの名無しさん [2019/10/06(日) 21:18:49.15 ID:QazjZrDG.net]
>>21
perl -ne '($a,$b,$c)=m/^((?:[^,]+,){3})(.*[^,])((?:,[^,\n]+){1})$/; $b=~s/,/、/g; print "$a$b$c\n"' input.csv

先頭の三つはカンマの数を数えて取り出し
^((?:[^,]+,){3})
フィールド数は固定とのことなので末尾側もカンマの数で取り出せる
((?:,[^,\n]+){1})$
その間が置換対象
(.*[^,])

ということで数字(3 と 1)を調整すれば実際のデータにも適用できると思います

25 名前:デフォルトの名無しさん [2019/10/06(日) 21:30:20.48 ID:QazjZrDG.net]
>>23
Python版
https://ideone.com/ApnsLv

26 名前:デフォルトの名無しさん mailto:sage [2019/10/07(月) 01:52:14.06 ID:iyJYb3kL.net]
質問を読んで直ぐにこれを書けるのなら速いけど
もし自分だったらあれをこうしてこれをこうしてと考えて試してる
間にテキストエディタとエクセルを行ったり来たりしながら
タブの挿入と置換と削除を繰り返した方が速いところが
悩ましいw

27 名前:デフォルトの名無しさん mailto:sage [2019/10/07(月) 03:37:15.45 ID:21LgfgEW.net]
Ruby で、下のコードを、script.rb に書いて、
入力ファイル名を、input.csv とすると、

端末で、ruby script.rb input.csv と入力する。
つまり、ruby スクリプトファイル名 入力ファイル名

require 'csv'

# 引数はファイル名
CSV.filter( File.open( ARGV[ 0 ] ) ) do |row| # 1行ずつ処理する
row[ 3 ] = row[ 3 ].tr( ",", "、" ) # 列4
end

28 名前:26 mailto:sage [2019/10/07(月) 04:17:44.92 ID:21LgfgEW.net]
>>26
修正

tr ではなく、tr! で、直接レシーバー(文字列)を変更できる

>row[ 3 ] = row[ 3 ].tr( ",", "、" ) # 列4
row[ 3 ].tr!( ",", "、" ) # 列4

29 名前:デフォルトの名無しさん mailto:sage [2019/10/07(月) 08:59:18.56 ID:fodStNL1.net]
それ splice でできるんじゃね? と思ったのでやってみた。

perl -nF, -e 'splice( @F,3,0,join("、",splice( @F,3,@F-5+1))); print( join(",",@F));'

30 名前: mailto:sage [2019/10/07(月) 21:08:31.31 ID:cbxlkLVD.net]
>>26
カンマでカラム分割してるからrow[3]にはカンマが含まれないよ

ARGF.each do |line|
line.match(/((?:.+?,){3})(.+)((?:,.+){1})/) do |match|
puts match[1] + match[2].gsub(",", "、") + match[3]
end
end

こういうのって力技で変換するよりも
CSV生成側でクウォートし直したほうがいいよね



31 名前:デフォルトの名無しさん mailto:sage [2019/10/07(月) 22:07:48.83 ID:fodStNL1.net]
手間をかけたくないなら、そんなフィールドは末尾に置くのが良い。
そうしておけば何を書こうと邪魔にならない。
いつかは手作業の限界を感じるかもしれないが、それを遅らせることはできる。

32 名前:デフォルトの名無しさん [2019/10/07(月) 23:06:48.69 ID:gEYFs1Cq.net]
AIDS治療みたいなもんか

33 名前:26 mailto:sage [2019/10/07(月) 23:29:10.22 ID:21LgfgEW.net]
>>29
>>26 は、CSV モジュールを使っているから、
列をクォートする事で、列内に、カンマが存在できる!

入力ファイル
a,b,c,"あ,い,う",d

require 'csv'

# 引数は入力ファイル名
CSV.filter( File.open( ARGV[ 0 ] ) ) do |row| # 1行ずつ処理する
p row[ 3 ] #=> "あ,い,う"
row[ 3 ].tr!( ",", "、" ) # 列4
end

出力
a,b,c,あ、い、う,d

34 名前:デフォルトの名無しさん mailto:sage [2019/10/07(月) 23:56:45.43 ID:cbxlkLVD.net]
>>32
いやそりゃクウォートしてれば問題ないよ

a,b,c,あ,い,う,d

a,b,c,"あ,い,う",d

変換する処理が必要なわけで
そこができてないから困ってるんじゃないのかな

35 名前:26 mailto:sage [2019/10/08(火) 00:22:31.74 ID:cRqslSem.net]
クォートしてなかったら、そもそも、CSV にならない!

列内に、カンマが含められないから、列数も変動する

36 名前:デフォルトの名無しさん mailto:sage [2019/10/08(火) 00:32:16.98 ID:brYPe3Nc.net]
それがわかってるから変形したいんじゃん。

37 名前:26 mailto:sage [2019/10/08(火) 02:16:13.41 ID:cRqslSem.net]
バグのほとんどが設計段階で生じる、典型的な例かw

バグを設計段階で修正せず、実装段階で修正しようとするから、
ますますダメになるという例w

SE・上流工程が馬鹿だと、こういうのが多いw
Ruby などで実装した事がないからだろうw

ダメな事をやる香具師が、あまりにも多いw

38 名前:デフォルトの名無しさん mailto:sage [2019/10/08(火) 06:58:17.53 ID:nEU/9wkt.net]
なにこの人
要望・仕様を満たせないバグありのプログラムを書いておいて
それを指摘されたら「設計が悪い」と逆ギレしだしたよ
Ruby使う人ってこんなしょうもないおっさんに成り下がるのか

39 名前:デフォルトの名無しさん [2019/10/08(火) 07:25:01.06 ID:daf3ib6k.net]
>>21
Vim
:%s/^\%([^,]*,\)\{3\}\zs\(.*\)\%(\%(,[^,\n]*\)\{1\}$\)\@=/\=substitute(submatch(0), ',', '、', 'g')/

Emacs
M-x query-replace-regexp
正規表現:
^\(\(?:[^,]*,\)\{3\}\)\(.*\)\(\(?:,[^,
]*\)\{1\}\)$
置換:
\1\,(replace-regexp-in-string "," "、" \2)\3

正規表現は>>23とほぼ同じだけど、空のフィールドに対応するよう + をすべて * に変更した
「第4フィールド」の内容がカンマだけの場合にも対応 (.*[^,]) → (.*)

40 名前:デフォルトの名無しさん [2019/10/12(土) 19:38:36.96 ID:vBnCHMzu.net]
>>16
お題スレの人が総当たりソルバー作ってくれた
https://mevius.5ch.net/test/read.cgi/tech/1564310397/757



41 名前:デフォルトの名無しさん mailto:sage [2019/10/29(火) 11:16:30.73 ID:czk9+d/A.net]
●Regular Expressionの使用環境
サクラエディタ bregoning.dll ver 4.12

●検索か置換か?
置換

●説明
をふくむ行(複数)を削除

●対象データ
A.jpg
B.jpg
C.jpg

●希望する結果
A.jpg

Bだけを削除するなら^.*B.*\nってわかるんですけど
B、Cを削除する方法がわかりません
誰か教えてください よろしくお願いします

42 名前:デフォルトの名無しさん mailto:sage [2019/10/29(火) 11:28:33.00 ID:Ef61zXRp.net]
>>40
いまいちやりたいことがはっきりしないが、
Aのみ残したなら、^[^AA].*?jpg¥n
BCのみ消したいなら、^[BC].*?jpg¥n

Aのみ全角なのは故意なのか?

43 名前:デフォルトの名無しさん mailto:sage [2019/10/30(水) 12:29:04.54 ID:n2bLSC2q.net]
を含む行を削除
でググればすぐに見付かるんだが

ttps://yanohirota.com/regex-delete-row/
キーワードを含む行(複数指定) ^.*(キーワード1|キーワード2).*$(\r\n|\r|\n)?

44 名前:デフォルトの名無しさん [2019/10/31(木) 18:25:55.12 ID:KC+T8umE.net]
●Regular Expressionの使用環境
Mery
●検索か置換か?
置換
●説明
パターンにマッチする行までの全ての行をキャプチャしたい
●対象データ
20191001
吾輩は猫である
名前はまだ無い
……
20191002
親譲りの無鉄砲で
子供の頃から
損ばかりしている
……

●希望する結果
20191001[Tab]"吾輩は猫である
名前はまだ無い
……"
[改行]
20191002[Tab]"親譲りの無鉄砲で
子供の頃から
損ばかりしている
……"
日付と本文が交互に現れるテキストを日付と本文とに分けてキャプチャして置換したいのですが、上手く行きません。
最短一致を使用すると本文が一行しかキャプチャできないし、最長一致ですと最後の日付までの全行がキャプチャされてしまいます。
どうかご教示下さい。

45 名前:デフォルトの名無しさん mailto:sage [2019/10/31(木) 20:12:39.29 ID:qSOPmN+b.net]
>43

検索
(^[0-9]{8})\n

置換
\n$1\t

46 名前:デフォルトの名無しさん mailto:sage [2019/11/01(金) 00:19:13.27 ID:l+SDkm5c.net]
Ruby では、

text = <<"EOT"
20191001

20191002


EOT

# キャプチャー部分の、#{ $1 } は、8桁の数字
p res = text.gsub( /^(\d{8})\n/ ) { "\n#{ $1 }\t" }
print res

出力
[空行]
20191001[Tab]あ
[空行]
20191002[Tab]い


47 名前:デフォルトの名無しさん [2019/11/01(金) 08:08:52 ID:TORoDjzQ.net]
>>44
ご回答ありがとうございます。
すみません。本文部分を"で括りたくて、数字8桁に挟まれた部分にマッチさせたいのです。

48 名前:デフォルトの名無しさん mailto:sage [2019/11/01(金) 09:29:10.19 ID:M2kmurNA.net]
>>46
CotEditorでドットが改行に一致する状態なら以下でできる
(^¥d{8})(.*(?=¥n¥d{8})|.*(?=$))

Meryは知らん

49 名前:デフォルトの名無しさん mailto:sage [2019/11/01(金) 09:30:04.91 ID:M2kmurNA.net]
一応置換はこれ
$1¥t"$2"

50 名前:デフォルトの名無しさん mailto:sage [2019/11/01(金) 11:19:24.96 ID:XqhX+0kD.net]
(^\d{8})\n((?~^\d{8}))$
\1\t"\2"
最後の行が改行されてると"がズレるからそこだけ手作業



51 名前:デフォルトの名無しさん mailto:sage [2019/11/01(金) 11:25:13.23 ID:zrbJp7o3.net]
negative lookahead
https://regex101.com/r/DBWwcI/1

最下行に日付+改行を付け足せばORが一つ減って少し読みやすい
https://regex101.com/r/R3MQz7/1

52 名前:デフォルトの名無しさん [2019/11/01(金) 13:33:34.02 ID:i0nQhs53.net]
>>43
^([0-9]{8})\n((?:(?!\n[0-9]{8}\n)[\S\s])+)

53 名前:デフォルトの名無しさん mailto:sage [2019/11/01(金) 13:55:21.62 ID:IH7Homqm.net]
(?m)(^[0-9]{8}$)\n(.*?)(?=\n[0-9]{8}$|\Z)
(?m)(^[0-9]{8}$)\n(.*?)(?=\n[0-9]{8}$|\z)

$1\t"$2"

54 名前:デフォルトの名無しさん mailto:sage [2019/11/01(金) 14:05:57.48 ID:zrbJp7o3.net]
>>50
negative lookaheadとか書きつつ全然negativeじゃなかったわ

55 名前:デフォルトの名無しさん [2019/11/02(土) 07:00:29.25 ID:Y+w4hll1.net]
皆様ありがとうございます
最短一致と先読みを組み合わせて
(\d{8})((?:.*\n)*?)(?=\d{8})
のような感じでマッチしました
単に.*だけだと行末までで止まってしまうので明示的に.*\nの繰り返しと指定しないといけなかったようです

56 名前:デフォルトの名無しさん mailto:sage [2019/11/18(月) 01:09:59 ID:B3FWH6HK.net]
/(A|B*|C+|D?|E?|)+/ は /[A-E]*/ と同じなんだろうか。

57 名前:デフォルトの名無しさん mailto:sage [2019/11/23(土) 19:09:02.72 ID:S+7ZA2D+.net]
=を含まない行を検索できる表現方法は?

58 名前:デフォルトの名無しさん mailto:sage [2019/11/23(土) 21:06:16.66 ID:8xX8HZu8.net]
>>56
^[^=]*$

59 名前:デフォルトの名無しさん [2019/11/24(日) 19:30:30.97 ID:BlMs70wA.net]
PCRE2 Version 10.34 21-November-2019
https://www.pcre.org/

60 名前:デフォルトの名無しさん mailto:sage [2019/12/07(土) 04:27:54 ID:Dhp88CPz.net]
今でもアクティブに更新してるのってPCREの他はre2と鬼車系くらいなのかな
昔はライブラリの話も結構してた気がするけど



61 名前:デフォルトの名無しさん mailto:sage [2019/12/07(土) 11:10:24 ID:hNCBwRLG.net]
Hyperscan

62 名前:デフォルトの名無しさん mailto:sage [2019/12/07(土) 19:19:38.35 ID:S05zsHBk.net]
テキストエディタで見えないけど何かがある状態
MacのBBEditだと逆さまの赤い「?」が表示される状態なんですけど
こういうのを正規表現で捕まえる事って出来ないですか?

63 名前:デフォルトの名無しさん mailto:sage [2019/12/07(土) 19:21:06.34 ID:+kYKAjJc.net]
否定で出来ない?

64 名前:デフォルトの名無しさん mailto:sage [2019/12/07(土) 20:27:35.79 ID:S05zsHBk.net]
>>62
色々やってみたけど
非単語構成文字に含まれてしまい上手くこれだけ抽出出来ないです
一体こいつは何者なんだろう? もうちょい悩んでみます

65 名前:デフォルトの名無しさん [2019/12/07(土) 20:32:56.16 ID:tj55yZgB.net]
そういうときはバイナリエディタで開いて該当部の文字コード引きなよ。

66 名前:デフォルトの名無しさん mailto:sage [2019/12/07(土) 20:51:47.44 ID:S05zsHBk.net]
ありがとうです
\x{7F}
でいけました

67 名前:デフォルトの名無しさん [2019/12/07(土) 21:19:40.77 ID:b/g70Kck.net]
ウムラウトなどのアクセント付きアルファベットにのみ一致させる正規表現をお教えください。

68 名前:デフォルトの名無しさん mailto:sage [2019/12/07(土) 21:54:33.96 ID:hNCBwRLG.net]
正規表現だけではまだできないんじゃないかな?

一般的には各言語が持ってるUnicodeの正規化機能を使って検索対象を基底文字+結合文字の形に正規化してから、結合文字を検索する

69 名前:デフォルトの名無しさん mailto:sage [2019/12/07(土) 22:53:57.20 ID:/3OJwFPr.net]
日本語なら、NKF というライブラリがあるように、
ウムラウトなら、その国のライブラリがあるかも知れない

知らないけど

まあ、日本人に聞いても、ムダだと思うw
使っている国の人に、聞いた方がよい

70 名前:デフォルトの名無しさん mailto:sage [2019/12/07(土) 23:41:45 ID:FrJsgiML.net]
cpanライブラリの中に一般的な正規表現集めたものがあるから
その中にあるかもね



71 名前:デフォルトの名無しさん mailto:sage [2019/12/08(日) 03:11:20.97 ID:BNiynU8G.net]
あるいは文字コードで標準ラテンのz(U+007A)よりあとを全て拾うように範囲指定するとか。

72 名前:デフォルトの名無しさん mailto:sage [2019/12/08(日) 12:38:28.10 ID:h14g0YSH.net]
>>66
数は知れてるんだから普通に[ÄäÏï …]ってやればいいんじゃね?

73 名前:デフォルトの名無しさん [2019/12/08(日) 14:00:42.26 ID:0T/Za1/I.net]
サクラエディタの正規表現ライブラリbregonig with Onigmoの場合、大文字小文字区別なしでßや\x{00DF}がssにヒットするので困る。

74 名前:デフォルトの名無しさん mailto:sage [2019/12/08(日) 14:15:46.03 ID:B7mwO2xN.net]
>>71
見た目が同じäでも文字コードの表現は複数ある
文字の種類も含めてこれで全部といえる集合を作れるならそれでいける
日本語で濁音が含まれる文字にのみ一致させる正規表現を求めてるのと似てる

75 名前:デフォルトの名無しさん mailto:sage [2019/12/08(日) 14:19:04.55 ID:B7mwO2xN.net]
https://i.imgur.com/tclLTCk.png

76 名前:デフォルトの名無しさん mailto:sage [2019/12/08(日) 17:17:16.59 ID:qQWD6Mfj.net]
[=a=]
equivalence class

77 名前:デフォルトの名無しさん mailto:sage [2019/12/08(日) 17:27:54.65 ID:DxA2hCcs.net]
●Regular Expressionの使用環境
鬼雲6.2.0 &Mery
●検索か置換か?
検索
●説明
行中の1個目の=にだけマッチさせたい
意味合いとしては
(?<=^[^=\n]+)=
なんだけど
>戻り読みの式は固定文字長でなければならない。
>しかし、最上位の選択子だけは異なった文字長が許される。
だそうで+はダメみたい
(?<=^(?~=))=
戻り読みの中に非包含もダメだった

(?<=^[^=\n]|^[^=\n]{2}|^[^=\n]{3}| .... |^[^=\n]{1000})=
とかすれば無理矢理出来そうだけどもっとスマートな書き方無いかな?

78 名前:デフォルトの名無しさん mailto:sage [2019/12/08(日) 17:35:15.85 ID:X/tkXkh9.net]
^.*?\K=

79 名前:デフォルトの名無しさん mailto:sage [2019/12/08(日) 17:45:34.12 ID:DxA2hCcs.net]
>>77
ありがとう
速っ。数日悩んであれこれ試してたのが嘘みたいなあっさり回答w
\Kとか意味分かってなかったけどこうやって使うんですね
重ね重ねありがとうございました

80 名前:デフォルトの名無しさん mailto:sage [2019/12/08(日) 18:23:57.85 ID:B7mwO2xN.net]
>>75
それだとウムラウトついてないのも引っかかるよね



81 名前:デフォルトの名無しさん mailto:sage [2019/12/08(日) 22:21:07.36 ID:DSHI20Cf.net]
\K
いいなそれと思ったけど自分の環境では使えなかった残念

82 名前:デフォルトの名無しさん mailto:sage [2019/12/09(月) 17:04:00 ID:o6YMciNa.net]
>固定文字長で >最上位の選択子だけは異なった文字長
これはこういう意味かな
(?<=^[^=\n]{1,1000})=

83 名前:デフォルトの名無しさん mailto:sage [2019/12/09(月) 21:21:57.03 ID:wMFl4+9a.net]
鬼車のは (?<=ab|cd) だけじゃなく (?<=ab|cde) みたいなのも可ってことだったと思う

戻り読みを本当に後戻りしながらマッチングしてる実装ってほとんどなくて
大抵は文字列を一旦n文字分巻き戻して先読み相当の処理をするって感じになってるんで
パターンコンパイル時に「n文字分」が確定できない表現は弾かれる

84 名前:デフォルトの名無しさん mailto:sage [2019/12/11(水) 02:25:16.21 ID:ue3GcKd8.net]
グレップ坊や というソフト使ってますが
正規表現で、データだけ検索 データーを除外したい
どいう表記になりますか?

85 名前:デフォルトの名無しさん mailto:sage [2019/12/11(水) 02:56:43.47 ID:ivhCTlPt.net]
データを表現する正規表現が基本
除外については反転オプションないの?
本家 grep には -v で反転する

86 名前:デフォルトの名無しさん mailto:sage [2019/12/11(水) 13:45:29.55 ID:Jxz7JQeN.net]
データ(?!ー)
データ(?=[^ー])
否定先読みか先読みが使えるならこれで出来る
独自のものだと適切なエスケープが必要かも
VB6ランタイム必要とあるからたぶんVBだろうけど

87 名前:84 mailto:sage [2019/12/14(土) 01:37:01.84 ID:atjDTluR.net]
下のほうで行けました

88 名前:デフォルトの名無しさん mailto:sage [2020/01/02(木) 13:19:03.26 ID:MApT2CVk.net]
●Regular Expressionの使用環境
sed-4.7-x64.exe
(Gnu sed4.7のwindows版 https://github.com/mbuilov/sed-windows)
Windows 8.1(64)のPowerShellで実行

●検索か置換か?
置換(削除)

●説明
行頭から6文字目を削除して、行頭から2文字目の後に一文字挿入したい

●対象データ
1229日 1400
1230月 1500
1231火 1500

●希望する結果
12/29日1400
12/30月1500
12/31火1500

sed.exe -e "s/(?<=^.{5})\s//" .\ファイル.txt
としたら6文字目のスペースが削除されるかと思ったけどうまくいかない
ファイルはUTF-8で改行はCRLFです

89 名前:デフォルトの名無しさん mailto:sage [2020/01/02(木) 13:33:45.38 ID:LqVuN/CI.net]
>>87
> うまくいかない
なぜどううまくいかないのかを書かないの?

90 名前:デフォルトの名無しさん mailto:sage [2020/01/02(木) 13:48:39.30 ID:MApT2CVk.net]
何も削除されずに元のファイルがそのままです。
エラー表示等はないです。



91 名前:デフォルトの名無しさん mailto:sage [2020/01/02(木) 16:53:21.09 ID:gZNl6+48.net]
^(.{2})(.{3}).(.*)$
$1/$2$3

92 名前:デフォルトの名無しさん mailto:sage [2020/01/02(木) 17:35:51.43 ID:fx8yTANL.net]
sed -i ?

93 名前:デフォルトの名無しさん mailto:sage [2020/01/02(木) 18:35:38.12 ID:gZNl6+48.net]
sed -E "s/^(..)(...)\s(.*)/\1\/\2\3/" .\ファイル.txt

94 名前:デフォルトの名無しさん mailto:sage [2020/01/13(月) 16:24:20.40 ID:pG6qAwQV.net]
●Regular Expressionの使用環境
正規表現の本・テキストで疑問に思った部分ですので特に環境は無いです 

●対象データ
太郎はテニス部のキャプテンです。
太郎はサッカー部のキャプテンです。
太郎は野球部のキャプテンです。
太郎はバスケ部のキャプテンです。

●検索か置換か?
検索

●希望する結果
太郎はテニス部のキャプテンです。
太郎はサッカー部のキャプテンです。
太郎は野球部のキャプテンです。

●説明
通常の 太郎は(テニス|野球|サッカー)部のキャプテンです では無く
バスケ という単語を使い正規表現を作りたいのです
()を使った場合(使わなくても バスケ を用いた方法であれば良い)
の否定文・除くの書き方がわかりません
^ を使っってみましたが上手く行きませでした

太郎は(^バスケ)部のキャプテンです。 ・・ダメ
太郎は^(バスケ)部のキャプテンです。 ・・ダメ  
太郎は(\^バスケ)部のキャプテンです。 ・・ダメ

バスケ を使った場合どの様に記述すれば良いのでしょうか?

95 名前:デフォルトの名無しさん mailto:sage [2020/01/13(月) 16:54:41.37 ID:omefpgVu.net]
否定は、(?!文字列)
でも、太郎は(?!バスケ)部の、とは書けないよ
「太郎は」に続く「バスケでない任意の1文字以上の文字列」部のキャプテンという風に考えてみてくれ

96 名前:デフォルトの名無しさん [2020/01/13(月) 17:05:50.06 ID:KqHO+Fgo.net]
>>93
正規表現だけでは否定を完全実現できない。
だからこそ、例えばgrepには -vオプションがある。いずれのライブラリやアプリも正規表現とは別の方法で否定を実現している。

97 名前:デフォルトの名無しさん mailto:sage [2020/01/13(月) 17:19:50.81 ID:isx+DaHv.net]
太郎は(?!バスケ).*部のキャプテンです。
太郎は(?!バスケ).*
(?!.*バスケ)太郎は.*部のキャプテンです。
(?!.*バスケ)太郎.*
(?!.*バスケ).*

98 名前:デフォルトの名無しさん mailto:sage [2020/01/13(月) 17:32:26.06 ID:isx+DaHv.net]
鬼雲 非包含
^(?~バスケ|\n)$

99 名前:デフォルトの名無しさん mailto:sage [2020/01/13(月) 18:15:40.74 ID:pG6qAwQV.net]
太郎は(?!バスケ).*部のキャプテンです。
にて出来ましたが
(?!バスケ) の扱いを .* でさらに処理しなきゃいけないのは全く思いつかないです
今回のを参考に今後も学習してみます

皆様 >>94->>97 ありがとうございました

100 名前:デフォルトの名無しさん mailto:sage [2020/01/13(月) 18:19:19.63 ID:isx+DaHv.net]
>>98
https://abicky.net/2010/05/30/135112/



101 名前:デフォルトの名無しさん mailto:sage [2020/01/14(火) 22:34:44.82 ID:kxfWTRop.net]
^(?!.*バスケ)(?=.*キャプテン)(?=.*太郎).*

102 名前:デフォルトの名無しさん [2020/01/15(水) 00:24:06 ID:qFZTgD7k.net]
'あ'.match(/[あ゙い゙ゔえ゙お゙]/u)

(環境依存文字ですが、[]の中身は濁点つきの「あいうえお」です)
'あ'は濁点なしなのでマッチさせたくないのですがしてしまいます
これってマッチしないようにする方法はないですか?
JavaScriptです

103 名前:101 mailto:sage [2020/01/15(水) 00:30:34 ID:qFZTgD7k.net]
>>101 自己解決しました

'あ'.match(/\u3099/u) //マッチしない
'あ゙'.match(/\u3099/u) //マッチする

104 名前:デフォルトの名無しさん mailto:sage [2020/01/15(水) 12:08:15.81 ID:lFvJ7mPZ.net]
^(?!.*バスケ(?!ット(?!ボール(?!選手)))).*
バスケ          ←不一致
バスケット        ←一致
バスケットボール    ←不一致
バスケットボール選手 ←一致
太郎はバスケットボール選手としてバスケ部に入部している ←不一致
太郎はバスケットボール選手としてバスケット部に入部している ←一致

105 名前:デフォルトの名無しさん mailto:sage [2020/01/15(水) 14:36:24.87 ID:mWwHDwCD.net]
んなことよりバスケやろうぜ

106 名前:デフォルトの名無しさん [2020/02/09(日) 22:06:03 ID:XBEo77KP.net]
マッチしたカッコ内の文字列をを利用する方法ってどうやるんでしたか?

hogehoge.jp
http://(.*).jp

このアスタリスクの部分を利用するのはどうやるんでしたかね
t1ではないです

107 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 22:18:21.72 ID:6++kPC7v.net]
>>105
>>2
> スルーされにくい質問のテンプレと例
> ●Regular Expressionの使用環境

108 名前:デフォルトの名無しさん [2020/02/09(日) 22:22:12.18 ID:XBEo77KP.net]
$1ですねどうも

109 名前:デフォルトの名無しさん [2020/02/09(日) 22:34:23.16 ID:XBEo77KP.net]
同じ行にあるurlにhrefを加える正規表現はどうするのでしょうか

hoge1.jp hoge2.jp
↑これを
<a href="hoge1.jp">http://hoge1.jp</a> <a href="hoge2.jp">http://hoge2.jp</a>
こうしたいです

1つだけならこうできます
http://(.*).jp

110 名前:デフォルトの名無しさん [2020/02/09(日) 22:34:49.85 ID:XBEo77KP.net]
$1.jp
を忘れていました



111 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 14:37:14 ID:8D13KkA5.net]
正規表現よりも、HTML パーサーの方がよい。
Ruby のnokogiri で、HTML をパースすると、

require 'nokogiri'

doc = Nokogiri::HTML(<<EOT)
<html><body>
<a href="hoge1.jp">http://hoge1.jp</a>
<a href="hoge2.jp">http://hoge2.jp</a>
</body></html>
EOT

elements = doc.css( "a" )

# 属性・テキスト
elements.each { |elem| puts elem.get_attribute( "href" ), elem.text }

出力
hoge1.jp
hoge1.jp
hoge2.jp
hoge2.jp

112 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 18:02:57.53 ID:cKG4UD69.net]
>>110

>>108はHTMLをパースしたいんじゃなく
HTMLの一部を生成したいんじゃろ

113 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 07:15:58.31 ID:Kcy+Q8b9.net]
>>108
.jpが末尾につく行がリンクだと仮定してjavascript

/^(.+\.jp)$/gm

上記の正規表現で

<a hef=“$1”>$1</a>

正規表現のフラグのmで複数行対応、gで複数の結果で対応出来ん?

114 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 13:30:47 ID:yXLnwJ70.net]
(https?://\S+)
<a href=“\1”>\1</a>

115 名前:デフォルトの名無しさん mailto:sage [2020/02/12(水) 09:21:48 ID:iIu6BAwU.net]
1) (hoge)
2) (hoge, fuga)
3) (hoge, fuga, piyo)

2) のみにマッチする正規表現のご教示よろしくお願いいたします

鬼雲

116 名前:デフォルトの名無しさん mailto:sage [2020/02/12(水) 10:28:49.15 ID:bUEb5r3d.net]
hogeとfugaを後で使うと仮定して
\((.+),(.+)\)

117 名前:デフォルトの名無しさん mailto:sage [2020/02/12(水) 10:51:06 ID:NK/UnlDo.net]
>>115
それだと3)にもマッチするよ

118 名前:デフォルトの名無しさん mailto:sage [2020/02/12(水) 11:05:14 ID:W9U9giTl.net]
>>114
a\)

119 名前:デフォルトの名無しさん mailto:sage [2020/02/12(水) 15:06:59.76 ID:bUEb5r3d.net]
.を[^,]でどう?

120 名前:デフォルトの名無しさん mailto:sage [2020/02/12(水) 15:37:27.75 ID:iIu6BAwU.net]
ID:bUEb5r3d 様
ありがとうございました。m(_ _)m

「\([^,]*,[^,]*?\)」で希望動作になりました



121 名前:デフォルトの名無しさん mailto:sage [2020/02/12(水) 18:44:57 ID:bUEb5r3d.net]
どういたしまして。

ちなみに+じゃなくて*にしてるのは
(,)
にも一致させたいという事?
あと?は無くても動かん?

122 名前:デフォルトの名無しさん mailto:sage [2020/02/12(水) 18:51:28 ID:gdzQpnag.net]
[^,]*だと改行と閉じ括弧を含んでしまい
次の行まで選択してしまうのでは?

123 名前:デフォルトの名無しさん mailto:sage [2020/02/12(水) 19:37:56.96 ID:bUEb5r3d.net]
確かにこんなデータも想定するとアウトやね

((hoge,huga)piyo)

改行はオプション次第だね

124 名前:デフォルトの名無しさん mailto:sage [2020/02/18(火) 23:17:54.25 ID:TkHg8SjE.net]
指定した2つの文字XYの間がn文字以下(0を含む)にマッチする検索方法教えてください

マッチ例n=3
XY
XaY
XabcY

NG
XabcdY

125 名前:デフォルトの名無しさん mailto:sage [2020/02/18(火) 23:50:11.22 ID:rgk/DkAY.net]
X.{0,3}Y
とかかな、試してないけど

126 名前:デフォルトの名無しさん mailto:sage [2020/02/19(水) 00:18:10 ID:Y6/DCNeg.net]
>>124
ありがとうございます

127 名前:デフォルトの名無しさん mailto:sage [2020/02/24(月) 14:31:40.12 ID:iLDNrypx.net]
●Regular Expressionの使用環境
実際に使う環境は不明ですが、まずはサクラエディタで試そうと思います。

●検索か置換か?
検索。マッチ部分を抽出できる必要はなく、含むかだけわかれば良いです。

●説明
文章(サクラは複数行NGとのことなので、今は1行)の中に「市」という文字が入っているかを判定したいです。
しかし、「横浜市」のような地名が入っているかを判定したいので、「巨大都市」「姉妹都市」のような特定のワードは排除したいです。
>>103の前後が逆のパターンになると思うのですが、単純に「^(?!.*(?!(?!巨大都|姉妹都)市)).*」とすると何もマッチしなくなってしまいます。
(そもそも「^(?!.*(?!ット(?!ボール))).*」の時点で「バスケット」にマッチしません)

●対象データ・希望する結果
ここは巨大都市だ
(マッチなし)
ここは横浜市だ
     ^
ここは巨大都市の横浜市だ
          ^

128 名前:デフォルトの名無しさん mailto:sage [2020/02/24(月) 14:48:12.43 ID:iQYTd9Fe.net]
>>126
(?<!巨大都|姉妹都)市

Negative Lookbehindを使う
https://regex101.com/r/kP6luP/1

129 名前:126 mailto:sage [2020/02/24(月) 15:48:38.69 ID:iLDNrypx.net]
>>127
できました、ありがとうございます
後読みというのもあるんですね

130 名前:デフォルトの名無しさん [2020/03/21(土) 15:01:32 ID:Ycs9n4/m.net]
どなたか教えてください。0が含まれる行のみ/以降を削除したいです。

(処理前)
2/3004
67//1
503/11/4
4/6/978

(処理後)
2
67//1
503
4/6/978

実際の文字列は数字とは限りません。可能かわかりませんがどうぞお願いします。



131 名前:デフォルトの名無しさん mailto:sage [2020/03/21(土) 1 ]
[ここ壊れてます]

132 名前:6:32:31.37 ID:S0XSDbOV.net mailto: >>129
使用環境も書きましょう。
プログラミング言語かテキストエディタかでも大分違ってきますし。

スルーされにくい質問のテンプレと例

●Regular Expressionの使用環境
Java1.5

●検索か置換か?
検索

●説明
各行の1番目のAまでを検索したい

●対象データ
ABCA
BCAA
CABA

●希望する結果
ABCA
^
BCAA
^^^
CABA
^^

※ ^ はアンダーラインだそうな ^^;
[]
[ここ壊れてます]

133 名前:デフォルトの名無しさん mailto:sage [2020/03/21(土) 16:58:05.15 ID:iWBNd/W/.net]
^(?=.*0)([^/]*).*$
\1

134 名前:デフォルトの名無しさん mailto:sage [2020/03/21(土) 18:17:29.30 ID:Ycs9n4/m.net]
>>131
すごい!完璧に希望どおりにできました!
アリガトウゴザイマス!!!

135 名前:デフォルトの名無しさん mailto:sage [2020/03/22(日) 11:16:42 ID:nQo0XPUd.net]
●Regular Expressionの使用環境
VisualWorks 7.7NC Regex11パーセル

●検索か置換か?
検索

●説明
jpgファイルの連番部分を取り出したい

なお正規表現にいくつか制約があります
先読みと後読みはできません (?= (?! (?<= (?<! などが未実装
最小一致も実装されていません
グループやキャプチャは可能です

'.*:^isDigit:(:isDigit:+)¥.(:isAlphabetic:+)$' asRegex. などとやっていましたが
これだと3333.jpgなどのパターンに対応できないので
'.*:^isDigit:?(:isDigit:+)¥.(:isAlphabetic:+)$' asRegex.
とやるとそもそもマッチしません
正規表現だけでやるうまい方法が見出せませんでした
isDigitは ¥d
isAlphabeticは [a-z] と読み替えできます

●対象データ
0000_1111_2222_3333.jpg
_0000_1111_2222_3333.jpg
3333.jpg

●希望する結果
3333
3333
3333

136 名前:デフォルトの名無しさん mailto:sage [2020/03/22(日) 11:49:39.63 ID:feI8vnc9.net]
0000などは連番扱いされないの?

137 名前:デフォルトの名無しさん mailto:sage [2020/03/22(日) 11:55:19.77 ID:zGmYOqdI.net]
>>133
正規表現の方言がマイナー過ぎて難しい
:^isDigit: はPerl5でいう [^0-9] と等価という理解で合ってる?

138 名前:デフォルトの名無しさん mailto:sage [2020/03/22(日) 12:16:09.69 ID:loDgnmn0.net]
ファイル名の最後の数字部分だけ取りたいなら (\d+).jpg とかじゃ駄目なん?

139 名前:デフォルトの名無しさん mailto:sage [2020/03/22(日) 12:33:09.14 ID:zGmYOqdI.net]
>>133
そもそも :^isDigit: の前に .*は必要?

140 名前:デフォルトの名無しさん mailto:sage [2020/03/22(日) 12:39:04.69 ID:nQo0XPUd.net]
>>134
その辺は捨てます
拡張子直前の数字だけを連番扱いです

>>135
それでいいです
書き方が変わってますが考え方は一緒です

>>137
ないとマッチしませんでした



141 名前:デフォルトの名無しさん mailto:sage [2020/03/22(日) 12:41:01.29 ID:nQo0XPUd.net]
>>136
試しましたがマッチしません

142 名前:デフォルトの名無しさん mailto:sage [2020/03/22(日) 12:43:52.41 ID:nQo0XPUd.net]
書き忘れましたが
ファイル名だけでなくファイルパスを含む場合があります・・

ex.
/a/b/c/d/_0000_1111_2222_3333.jpg

3333.jpgのようなパターンさえなければ対応できているのですが
これが来た場合にうまくいきません

143 名前:デフォルトの名無しさん mailto:sage [2020/03/22(日) 13:22:29.93 ID:ilL19jCu.net]
>>139

>>136のだと
拡張子のピリオドがエスケープされてないから
(\d+)\.jpg
でキャプチャ箇所を抽出すればよいのでは?

144 名前:デフォルトの名無しさん mailto:sage [2020/03/22(日) 13:27:20 ID:nQo0XPUd.net]
>>141
エスケープ付けてテストしてあります

145 名前:デフォルトの名無しさん mailto:sage [2020/03/22(日) 13:29:10.24 ID:aG3rJm5+.net]
>>140
(/a/b/c/d/_0000_1111_2222_)?3333.jpg

146 名前:デフォルトの名無しさん mailto:sage [2020/03/22(日) 13:33:55.99 ID:nQo0XPUd.net]
>>143
マッチします

147 名前:デフォルトの名無しさん [2020/03/22(日) 13:53:17.55 ID:7GTLasBi.net]
>>138
メソッドは何を使っているの
メソッドによって「文字列の先頭で一致する」とか
「文字列の任意の場所で一致する」とかあるでしょ
前者を使っているのでは?
後者なら>>136の類で上手く行くと思う

さもなくば ^(|.*:^isDigit:)(:isDigit:+)\.(:isAlphabetic:+)$ でどうかな

148 名前:デフォルトの名無しさん mailto:sage [2020/03/22(日) 14:25:12.02 ID:HpFFHFhU.net]
JavaScript なら、これで一致するので、
キャプチャー部分だけを取り出す

var re = /(\d+)\.jpg/g;

149 名前:デフォルトの名無しさん mailto:sage [2020/03/22(日) 14:31:11.47 ID:loDgnmn0.net]
文字列の先頭からしかマッチできないんなら .*(\d+).jpg でいいんじゃね
ルールがローカルすぎてよくわからんが

150 名前:デフォルトの名無しさん mailto:sage [2020/03/22(日) 14:42:52.35 ID:I5Su+SV6.net]
>>133
>これだと3333.jpgなどのパターンに対応できない
ORでそのパターンをカバーしてやればいいよね



151 名前:デフォルトの名無しさん mailto:sage [2020/03/22(日) 14:50:15.15 ID:loDgnmn0.net]
(.*[^\d])?(\d+)\.jpg

152 名前:デフォルトの名無しさん mailto:sage [2020/03/22(日) 15:07:09.29 ID:nQo0XPUd.net]
>>145
先頭からスキャンするメソッドしかないようです
試して見たところうまく行きそうなのでテストしています
あまり関係ないですがisDigitやisAlphabetic自体がメソッド名で
char.isDigit(); みたいに内部的に呼ばれています

>>147
それだと最長一致の関係で
3333のうち3だけ取り出されてしまいます

>>149
こちらもうまく行きそうです

後ほど結果ご報告致します

153 名前:デフォルトの名無しさん mailto:sage [2020/03/22(日) 15:21:27 ID:H4vT0xhv.net]
(.*[^\d])?(\d+)\.jpe?g
\2

154 名前:デフォルトの名無しさん mailto:sage [2020/03/22(日) 15:30:56.06 ID:nQo0XPUd.net]
一通り検査して全てパスできました
皆様ありがとうございました

それにしてもうまい方法があるものですね勉強になります・・

155 名前:デフォルトの名無しさん mailto:sage [2020/03/22(日) 21:42:28 ID:hAKSIWAv.net]
>>133を見て何が何だかだわ
皆さんスゲーな

156 名前:デフォルトの名無しさん mailto:sage [2020/03/23(月) 07:21:58.66 ID:jGS2rL5b.net]
VSCode なら、Regex Previewer という拡張機能がある

JavaScript, PHP の正規表現をテストできる

157 名前:デフォルトの名無しさん mailto:sage [2020/04/09(木) 01:23:43 ID:o0bB5yvE.net]
正規表現の段位、級位みたい試験があると転職に役立つかな
正規表現3段所持みたいな
試験問題はほとんどパズルだな

当方は頭悪いので、複数の単純な正規表現使用派

158 名前:デフォルトの名無しさん mailto:sage [2020/04/09(木) 14:34:47.92 ID:67/p/Sga.net]
正規表現必須!てな現場もそうそう無いだろうし
使えて当たり前、だけど高度過ぎる常人に思い付けないようなものが必要になる場面もまず無いだろうし
そうなったら出来る奴に丸投げすりゃいいし
プログラム内なら全て正規表現任せにせずに前処理した方が良いケースも多々あるからそれ絡めてのスキルだと思うし
方言が多い事や解が複数あり得る事も試験化には問題
マークシート選択方式では引っ掛け問題ばかりになるだろうし何か違う気がする
資格化したところで精々、文系脳の奴がどれだけ論理思考が出来るか?の目安とか雑なIQ判定くらいにしか役立ちそうにない
義務教育内でこんなのあるよ程度に最低限くらいは教えておいて欲しいけど資格化までは疑問かな

159 名前:デフォルトの名無しさん mailto:sage [2020/04/09(木) 18:11:21 ID:AINw40ik.net]
>>156
君は正規表現の前に日本語の義務教育受けてこいw

160 名前:デフォルトの名無しさん mailto:sage [2020/04/09(木) 21:20:08 ID:HMI1Vo9o.net]
日本語力に特段問題があるようには見えないが



161 名前:デフォルトの名無しさん mailto:sage [2020/04/09(木) 21:34:35 ID:+PEAWxOJ.net]
俺もちゃんと何言ってるのか分かったし、特に読んでて疑問も覚えなかったね

162 名前:デフォルトの名無しさん mailto:sage [2020/04/09(木) 22:20:15.44 ID:zOdaCiQO.net]
文章がくどいとは思う

163 名前:デフォルトの名無しさん mailto:sage [2020/04/09(木) 22:26:46 ID:BSAQTOUE.net]
難題を解決したらあいつスゲーなとなるけど
なかなかその機会が訪れないよな

164 名前:デフォルトの名無しさん mailto:sage [2020/04/09(木) 23:07:21.92 ID:+PEAWxOJ.net]
>>160
くどいというより接続詞で繋げすぎだね

165 名前:デフォルトの名無しさん mailto:sage [2020/04/10(金) 05:35:38 ID:OHa28c9H.net]
論文とかの文章ならどうかと思うけど
こういう掲示板での改行の仕方とか含めての表現では
別に問題ないよなと思った

166 名前:デフォルトの名無しさん mailto:sage [2020/04/10(金) 07:01:05.28 ID:ZlkuoHXS.net]


167 名前:`務教育やり直せレベルにはみえない
雑文としては意味が通じないような文では無いだろう
157の日本語力が低杉なんじゃ?
[]
[ここ壊れてます]

168 名前:デフォルトの名無しさん mailto:sage [2020/04/10(金) 08:59:24.36 ID:sn6MPl7m.net]
>>161
パズルとしてはいいけど業務でやられると保守できなくなるしな

169 名前:デフォルトの名無しさん mailto:sage [2020/04/10(金) 09:02:57.81 ID:sn6MPl7m.net]
>>157フルボッコw
最初の方で「~し」を多用してるのがちょいウザいけど内容的にはまあ頷けるわな

170 名前:デフォルトの名無しさん mailto:sage [2020/04/10(金) 11:44:30.56 ID:BcRc61MP.net]
>>161
そいつじゃないとできないっていう状況を会社は嫌がるからね
いつやめるかもわからんし
資産がゴミ化してしまうのを恐れる



171 名前:デフォルトの名無しさん mailto:sage [2020/04/10(金) 14:42:19.38 ID:k/YdHOe5.net]
そもそも問題が複雑だから複雑な正規表現になってしまうのでは?
そういう場合はそいつじゃないとできないという状況になってしまうこともありうる

172 名前:デフォルトの名無しさん mailto:sage [2020/04/10(金) 15:00:43 ID:71OQfeOs.net]
うん、そういう場合もあると思うけど
多くの人はそもそも正規表現で解決出来るかもという発想がなくて
手間と時間をかけて頑張るか、その仕事を断る
そんな場合が多い気がする

173 名前:デフォルトの名無しさん mailto:sage [2020/04/10(金) 15:25:33 ID:BcRc61MP.net]
まあbison/flex使って片付けてたらそれはやめてくれとも言われたこともあるしな
引き継げないだろと

174 名前:デフォルトの名無しさん mailto:sage [2020/04/10(金) 16:34:01.15 ID:sn6MPl7m.net]
>>168
一例として…

頑張れば1つにまとめられる
でも場合分けすればコードは長くなるし性能も劣化するけどわかりやすく書ける

って言うケースはそれなりにあると思うよ

175 名前:デフォルトの名無しさん mailto:sage [2020/04/10(金) 23:03:46.23 ID:ALVzSQYS.net]
頑張りすぎちゃって誰もメンテできないような手に負えないSQLってたまに出くわすけど、
それと同じような要領で頑張りすぎちゃって誰もメンテできないような正規表現が出てきたら・・・・
自分だったらSQLのときよりもさらに全力で逃げ出すかなあ

正規表現ってただでさえ魔法のような暗号文化しがちだし(後で読解に困ることも多いし)
仕様を簡潔明瞭にコードに落とし込むスキルがないダメプログラマが
力技で正規表現ゴリゴリ書くことを考えるとかなりの恐怖
エスアイアーの現場ならむしろ安全のため正規表現全面禁止にしておくほうがマシなんじゃなかろうか

176 名前:デフォルトの名無しさん mailto:sage [2020/04/11(土) 00:23:01.95 ID:yLiBv2Sb.net]
三項演算子でも同じ問題あるね
可読性と簡潔性は必ずしも両立しない

177 名前:デフォルトの名無しさん mailto:sage [2020/04/11(土) 00:37:32 ID:aIl7Qg1V.net]
仕様がわかっていれば
ちゃんとしたドキュメントが残っていれば何とでもなる
暗号をわかりやすいプログラムに変換可能だから
とりあえず動いているので触りたくないというのどうにもならない
それはそのプログラムが近い将来破綻することを意味する

178 名前:デフォルトの名無しさん mailto:sage [2020/04/11(土) 01:03:41.61 ID:Ni1vKiQd.net]
>>172
正規表現は仕様の分かるテストケース一式を必ず用意させれば問題ない

つまり難しい正規表現を使いこなす能力よりも
もれなくテストケースを書ける能力のほうが大事

179 名前:デフォルトの名無しさん mailto:sage [2020/04/11(土) 05:53:16 ID:qQ/s2VQN.net]
>>175
あーあーそれはなんか分かる・しっくり来るな。完全同意だわ。

180 名前:デフォルトの名無しさん mailto:sage [2020/04/11(土) 09:32:41.81 ID:Qk2+GLy8.net]
>>175
でもそれって正規表現使っているか否かに関わらず本来なされているべきことだよね
正規表現とか特定の機能を使ってるところだけ特別扱いして



181 名前:hキュメントやテスト仕様を残させるとか
絶対サボる人が出てきそう
でもってサボったところに限って誰も直せないようなクソコードと化すパターン
[]
[ここ壊れてます]

182 名前:デフォルトの名無しさん mailto:sage [2020/04/11(土) 16:30:10.27 ID:Ni1vKiQd.net]
>>177
仕様の分かるテストケースってのはテストコードのことね
正規表現は作る時に必ずマッチする例とマッチしない例を書いて確認するでしょ?
それを仕様の分かるテストコードにしてセットで扱えるようにしておくってこと
コードレビュー時も正規表現だけ見てレビューしても効果薄いから
テストコードとセットでレビューする

>でもそれって正規表現使っているか否かに関わらず本来なされているべきことだよね
これはそうでもないよ
複雑なSQLの場合は仕様の分かるテストコードを一式用意するのは結構難しくて
ある範囲を超えると手間に見合わないから仕様書とSQL自体のレビューだったり手動テストで補完する
正規表現は純粋関数として扱えるのでその辺の難しさがない

183 名前:デフォルトの名無しさん mailto:sage [2020/04/14(火) 11:27:53 ID:uSEs8eKP.net]
足並み揃えないと不安で死んじゃう病

184 名前:デフォルトの名無しさん mailto:sage [2020/04/14(火) 11:37:16 ID:ARaCq1kB.net]
人っていついなくなるかわからないからね
事故だったり勝手な理由で辞めたり

185 名前:デフォルトの名無しさん mailto:sage [2020/04/15(水) 10:44:15.36 ID:MMPwOLF/.net]
●Regular Expressionの使用環境
grep (GNU grep) 2.20

●検索か置換か?
検索

●説明
今日から、14日間(位)を抜き出したい。

●対象データ
(前にもたくさん)
2020-03-14
2020-03-14
2020-03-15
2020-03-15
(中略)
2020-04-14
2020-04-14
2020-04-15
2020-04-15
(後も続く)

●希望する結果
14日前から2020-04-15を抽出できる事を希望します。
元ファイルに存在しない日付(3月33日があったり・・)などは無く、書式も必ず対象データに記載のもので出力されます。
また、30の月、31の月なども考慮しないでOKです。(できる限りシンプルな書式でお示しください)
サンプルお示しいただけたら、あとはググりながら自分で調べます。

ググったのですが、サンプルになるいい感じのシンプルな書式が見当たらず
どうにもうまく正規表現を作れずにおります。何卒宜しくお願い致します。

186 名前:デフォルトの名無しさん mailto:sage [2020/04/15(水) 11:13:15.42 ID:ajU4Q4+G.net]
カレンダーは西向く侍があるから正規表現単独では無理では……

187 名前:デフォルトの名無しさん mailto:sage [2020/04/15(水) 11:16:23.86 ID:oU4wEPk/.net]
>>181
意味がよくわからんが、
任意の日付から14日前(後?)を抜き出すってことなら
正規表現よりはscriptの領域だろ。

188 名前:デフォルトの名無しさん mailto:sage [2020/04/15(水) 11:19:34.98 ID:MMPwOLF/.net]
>>182
大体でもできないでしょうか。
と書こうと思ったときに思いつきました。。。

実行速度に問題が出るかもしれませんが、
3月15日または、3月16日または、3月17日または・・・4月15日。

って力技でやってみます・・・。

もし、ほかにも「こういう方法があるよ」って素敵なアイデアお持ちのかた
いらっしゃいましたら、ぜひレスをください。宜しくお願い致します。

189 名前:デフォルトの名無しさん mailto:sage [2020/04/15(水) 11:29:40.68 ID:oU4wEPk/.net]
>>184
そもそも4/15から14日前で何で3月が入るんだよ。
間飛んでる可能性があるって事?
だとすればなおさら正規表現向きではない。

190 名前:デフォルトの名無しさん mailto:sage [2020/04/15(水) 11:31:48.22 ID:MMPwOLF/.net]
>>185
すみません、そこは書き間違えです。
awkってコマンドでできそうなので
もう少し調べてみます。

スレ汚し失礼いたしました。



191 名前:デフォルトの名無しさん mailto:sage [2020/04/15(水) 11:48:04.80 ID:oU4wEPk/.net]
>>186
3/15〜4/15限定での力技なら
2020(¥-03¥-(1[5-9]|2[0-9]|3[0-1])|¥-04¥-(0[1-9]|1[0-5]))

192 名前:デフォルトの名無しさん mailto:sage [2020/04/15(水) 11:49:07.49 ID:MMPwOLF/.net]
>>183
ありがとうございます。
scriptというのが大きなヒントになり解決に至りました。

結果的にはこれでできました。
cat 対象ログファイル | awk '"2020-04-01" <= $2 && $2 < "2020-04-02"'

性器表現ばっかりにとらわれてました・・
ありがとうございます。

193 名前:デフォルトの名無しさん mailto:sage [2020/04/15(水) 13:19:12 ID:Ut6Mn670.net]
何を言いたいのかエスパーでもわからん
オーダーはもっと正確に

194 名前:デフォルトの名無しさん mailto:sage [2020/04/15(水) 16:37:41 ID:h/7T7n1i.net]
>>181
ちょっとだけややこしい検索にはawkがおすすめ

195 名前:デフォルトの名無しさん mailto:sage [2020/04/15(水) 16:53:34 ID:z6xNdPvI.net]
性器表現って(i)みたいなのだろw

196 名前:デフォルトの名無しさん mailto:sage [2020/04/21(火) 11:40:37.33 ID:3ZBp0+Pn.net]
●Regular Expressionの使用環境
サクラエディタ

●検索か置換か?
置き換え

●説明
pingの結果(成功)をtxtに収めたものから、
IPアドレスだけ抜き取りたい

●対象データ
Echo reply 1 from 192.168.0.1 time delay 99.999 ms
Echo reply 2 from 192.168.0.1 time delay 88.999 ms
Echo reply 1 from 192.168.0.2 time delay 88.999 ms
Echo reply 2 from 192.168.0.2 time delay 88.999 ms
以下同じように続く

●希望する結果
192.168.0.1
192.168.0.1
192.168.0.2
192.168.0.2

〇実際に得られた結果
2.168.0.1
2.168.0.1
2.168.0.2
2.168.0.2

よろしくお願いいたします。

197 名前:デフォルトの名無しさん mailto:sage [2020/04/21(火) 11:41:25.90 ID:3ZBp0+Pn.net]
〇使用した正規表現(置換)
.*((([0-9]{1,3}\.){3})[0-9]{1,3}).*
$1

が抜けてました

198 名前:デフォルトの名無しさん mailto:sage [2020/04/21(火) 12:43:11.20 ID:iVBBDkGx.net]
今の奴を少し手直しして
.*\b(([0-9]{1,3}\.){3}[0-9]{1,3}).*
とか
.* (([0-9]{1,3}\.){3}[0-9]{1,3}).*

必ずfrom〜timeに挟まれるなら
.*from ([\d.]*) time.*
とか

199 名前:デフォルトの名無しさん mailto:sage [2020/04/21(火) 13:08:13.53 ID:bjfyOojV.net]
>>193
とても意味がわかって書いているとは思えないが。
ログがそのパターンだけならこれでいけるでしょ。
¥d+¥.¥d+¥.¥d+¥.¥d+
頭が192.168.だけならそれで絞ってもいいし。

200 名前:デフォルトの名無しさん mailto:sage [2020/04/21(火) 13:34:44 ID:3ZBp0+Pn.net]
>>194
両方ばっちりうまくいきました。
ありがとうございます。

\dとか\bとかいろいろあるんですね。
\t位しか知りませんでした。
ありがとうございます。



201 名前:デフォルトの名無しさん mailto:sage [2020/04/21(火) 22:38:03.26 ID:alPdontK.net]
.* を [^0-9]* もしくは \D*

202 名前:デフォルトの名無しさん mailto:sage [2020/04/21(火) 23:03:33 ID:J0u+GdjC.net]
推奨はしないけど、元の奴で、.*に?を追加して
.*?((([0-9]{1,3}\.){3})[0-9]{1,3}).*

203 名前:デフォルトの名無しさん [2020/05/16(土) 15:22:19 ID:hjibA7SH.net]
ランダムな文字列によるコピペ荒らしで
12文字中の文字が最大で6種類しかない
ようなときどうすればいいでしょうか?

(.)\1*([^\1])\2*([^\1\2])\3*([^\1\2\3])\4*([^\1\2\3\4])\5*(
[^\1\2\3\4\5])\6 (.)\1*([^\1])\2*([^\1\2])\3*([^\1\2\3])\4*([^\1\2\3\4])\5*(
[^\1\2\3\4\5])\6*[\1\2\3\4\5\6]{6,}

こんな風にすると新たな種類の文字がキャプチャされていくように思えますが
既に登場した文字が再び登場するとマッチしなくなります

204 名前:デフォルトの名無しさん [2020/05/16(土) 15:33:21 ID:hjibA7SH.net]
例を挙げると


↓慮↓鸞↑↓↓→慮↑←←↑→↑鸞↑→←→艪慮慮↑鸞鸞慮慮艪艪鸞→→↑慮↓→↓↓↑
慮鸞鸞艪艪→慮鸞艪鸞鸞↑慮艪慮艪慮↑←慮↑↑慮↑←艪→←鸞↑↓↑↑↓艪↓鸞慮→→
→艪←艪←↓↓←艪←↑→←←←鸞↓↓艪↑鸞←鸞←↓慮鸞←慮←慮↓慮慮慮慮↓↑艪

こんな感じの荒らしです
文字は毎回ランダムで変わります
登場する文字の種類が少ないという点でマッチさせたいと思っています

205 名前:デフォルトの名無しさん mailto:sage [2020/05/16(土) 15:34:13 ID:C+uyEXd2.net]
(.)\1*([^\1])[\1\2]*([^\1\2])[\1\2\3]*([^\1\2\3])[\1\2\3\4]*([^\1\2\3\4])[\1\2\3\4\5]*
こんな感じ?

206 名前:デフォルトの名無しさん [2020/05/16(土) 19:45:32 ID:hjibA7SH.net]
>>201
試したらそれだとほぼ全ての文章にも当てはまるみたいです

207 名前:デフォルトの名無しさん mailto:sage [2020/05/16(土) 20:00:27.44 ID:C+uyEXd2.net]
^(.)+(?!\1)(.)(?:\1|\2)*(?!\1|\2)(.)(?:\1|\2|\3)*(?!\1|\2|\3)(.)(?:\1|\2|\3|\4)*
文字クラス中で後方参照使えないなら否定先読みで代替

208 名前:デフォルトの名無しさん mailto:sage [2020/05/16(土) 20:04:12.78 ID:C+uyEXd2.net]
訂正
試してなかった
^(.)\1*(?!\1)(.)(?:\1|\2)*(?!\1|\2)(.)(?:\1|\2|\3)*(?!\1|\2|\3)(.)(?:\1|\2|\3|\4)*

209 名前:デフォルトの名無しさん mailto:sage [2020/05/16(土) 20:19:48.01 ID:vPXPesfb.net]
無理だと思ったけどなんかできたわ
6種類以下の文字だけで行の頭から20文字
(?m:^)(?=(.)\1*+(?>(.)(?>\1|\2)*+(?>(.)(?>\1|\2|\3)*+(?>(.)(?>\1|\2|\3|\4)*+(?>(.)(?>\1|\2|\3|\4|\5)*+(.)?+)?+)?+)?+)?+)(?>\1|\2|\3|\4|\5|\6){20}

210 名前:デフォルトの名無しさん [2020/05/16(土) 20:35:19.65 ID:hjibA7SH.net]
>>203-205
ありがとうございます!
後方参照難しいですね…



211 名前:デフォルトの名無しさん mailto:sage [2020/05/16(土) 20:49:23.06 ID:YcXGn5Zu.net]
言ってる通りの条件でやると滅茶苦茶誤爆して使い物にならんと思う
例が7文字だし、ググって類似の荒らしが使っているものにマッチしつつ誤爆控え目にするように
110字以上のレスの最後まで7字以下というくらいの条件にしたらこんな感じか

^ *(?=.{110})([^<br> ])(?:[<br> ]|\1)*([^<br> ])(?:[<br> ]|\1|\2)*([^<br> ])(?:[<br> ]|\1|\2|\3)*([^<br> ])(?:[<br> ]|\1|\2|\3|\4)*
【改行】([^<br> ])(?:[<br> ]|\1|\2|\3|\4|\5)*([^<br> ])(?:[<br> ]|\1|\2|\3|\4|\5|\6)*([^<br> ])(?:[<br> ]|\1|\2|\3|\4|\5|\6|\7)*$

【改行】とその前の改行を削除

212 名前:デフォルトの名無しさん mailto:sage [2020/05/16(土) 21:09:00 ID:BiE2hTzx.net]
別の判定要件にしないと誤爆頻発しそう...

例えば「特定コード範囲の文字が連続n回出現でNG」とかじゃダメなの?

213 名前:デフォルトの名無しさん [2020/05/16(土) 21:23:17.44 ID:hjibA7SH.net]
>>208
確率的に連続しないケースが結構出ちゃいますよね

214 名前:デフォルトの名無しさん mailto:sage [2020/05/17(日) 01:33:54 ID:C/hIIgkx.net]
文字→文字または文字パターン、でどうだろう

そのボットの仕様を把握してないし実際のレスも見たことないのでなんとも言えないけど、文字種の制約以外に傾向を見いだせないってこと?

215 名前:デフォルトの名無しさん [2020/05/17(日) 03:28:48 ID:EMK05c2V.net]
>>210
こんな感じ


東大医学部医学科卒業、3年連続国試不合格のルシファーさん、偏差値95.3を取った模試の成績表をTwitterのヘッダーにしてしまう
leia.5ch.net/test/read.cgi/poverty/1589560323/

電光掲示板的なAAによって正規表現NGを逃れようとしている

今のところ
(\S{0,10}\s){10,}
(?=(.)\1*+(?>(.)(?>\1|\2)*+(?>(.)(?>\1|\2|\3)*+(?>(.)(?>\1|\2|\3|\4)*+(?>(.)(?>\1|\2|\3|\4|\5)*+(?>(.)(?>\1|\2|\3|\4|\5|\6)*+(?>(.)(?>\1|\2|\3|\4|\5|\6|\7)*+(?>(.)(?>\1|\2|\3|\4|\5|\6|\7|\8)*+(.)?+)?+)?+)?+)?+)?+)?+)?+)(?>\1|\2|\3|\4|\5|\6|\7|\8){17,}
で完璧に対応出来てる

216 名前:デフォルトの名無しさん [2020/05/17(日) 03:45:05.05 ID:EMK05c2V.net]
17文字もあるのに文字種が8種以内って
自然言語としては有り得ないわけですよ
そのエントロピー的な性質をターゲットにしてる
つまり完全ランダムじゃなくて電光掲示板的に嫌がらせメッセージを目立たせたいという意図を持ってるから可能になる手法

217 名前:デフォルトの名無しさん mailto:sage [2020/05/17(日) 03:46:57.41 ID:C/hIIgkx.net]
>>211
なるほどw

218 名前:デフォルトの名無しさん [2020/05/17(日) 04:00:56.20 ID:EMK05c2V.net]
こうかはばつぐんだ!

必死にNG逃れのためのスクリプト書いたのに全て通用しなくて発狂して逃げたww

219 名前:デフォルトの名無しさん mailto:sage [2020/05/17(日) 04:36:26.20 ID:zN/y7CUr.net]
結果として片棒担がされてた訳か

https://leia.5ch.net/test/read.cgi/poverty/1589560323/870
870 番組の途中ですがアフィサイトへの転載は禁止です (ワッチョイW 2bde-sAUE) 2020/05/17(日) 00:30:59.00 ID:LtSh5oo60
再度書き込みなっちまったけど、レスすんなよ
グズ正規表現野郎。
お前が煽ったせいで、さらにサキオタアンチがめんどくさくなった。
皆、ひっそり、IDやワッチョイと、少しの正規表現でNGしてた。
それらができない5chブラウザとかあるのに。

自分だけ調子に乗るなよクズ。

220 名前:デフォルトの名無しさん [2020/05/17(日) 04:4 ]
[ここ壊れてます]



221 名前:1:56.29 ID:EMK05c2V.net mailto: >>215
それ荒らし本人が正規表現で完封されるのが悔しくて書いたやつだぞ
[]
[ここ壊れてます]

222 名前:デフォルトの名無しさん mailto:sage [2020/05/17(日) 04:45:15.72 ID:zN/y7CUr.net]
そうなのか
でもはたから見てると一緒だと思うよ
荒らし構うのはただの荒らしだよ

223 名前:デフォルトの名無しさん [2020/05/17(日) 04:53:36.77 ID:EMK05c2V.net]
>>217
この荒らしは誰からも無視されてるのに何年も続けてる奴だからな
自分がターゲットにされて遊ばれて悔しいという体験は初めてだろうな
放置すれば荒らしが消えると思うのは間違い
キチガイは何年でも休まずに荒らし続ける
しかも手動で

そのキチガイの世界を壊してあげる作戦

224 名前:デフォルトの名無しさん mailto:sage [2020/05/17(日) 05:51:07.31 ID:zN/y7CUr.net]
自粛警察みたいな奴だな
正義とか妄信しない方が良いぞ

225 名前:デフォルトの名無しさん [2020/05/17(日) 05:52:32.20 ID:EMK05c2V.net]
アホを悔しがらせて頭の体操になるなんて最高やん
こんな快感なこと他にある?

226 名前:デフォルトの名無しさん mailto:sage [2020/05/17(日) 13:46:59 ID:2FMa8UuX.net]
正規表現を自動生成するAIはまだ?

227 名前:デフォルトの名無しさん [2020/05/17(日) 18:37:04.48 ID:EMK05c2V.net]
機械学習で正規表現を獲得するみたいなの出来ないですかね

228 名前:デフォルトの名無しさん mailto:sage [2020/05/17(日) 20:33:27.11 ID:MuJmPUno.net]
他力本願+ノイズは一人前

229 名前:デフォルトの名無しさん mailto:sage [2020/05/29(金) 08:30:19 ID:/k2a15rY.net]
*でも+でもどちらでもよいという場面では*にするのが慣例でしょうか?それとも文字通りどちらでもいいのかな?

230 名前:デフォルトの名無しさん mailto:sage [2020/05/29(金) 11:43:39.33 ID://ihWgfL.net]
このスレに来る奴って論理的思考をする人達だと思ってたけど、
慣例とか持ち出すような奴も来るんだな
意味が有って違うSyntaxなんだから適切な方を使え



231 名前:デフォルトの名無しさん mailto:sage [2020/05/29(金) 12:20:15 ID:KLwVXlC+.net]
どっちでもいいってどういう場合だ
どっちかになるだろ

232 名前:224 mailto:sage [2020/05/29(金) 13:19:30 ID:YZO921+1.net]
例えば対象が1回以上の繰り返しだとします
0回以上には1回以上が含まれているのだから、どちらかが適切であるという積極的な理由が見つかりません

233 名前:デフォルトの名無しさん mailto:sage [2020/05/29(金) 13:22:19 ID:KLwVXlC+.net]
一つも無くていいってのと一つは必ず無いといけないってのは両立する場面は無い

234 名前:デフォルトの名無しさん mailto:sage [2020/05/29(金) 13:27:35 ID:zvuAHZcb.net]
「1回以上」ならつべこべ言わずに"+"だな
「0回は外したい」という意味を含むのであれば
"*"は仕様から外れる
個人的には"*"はできるだけ使わない

235 名前:デフォルトの名無しさん mailto:sage [2020/05/29(金) 15:05:09 ID:IKIHl4j2.net]
1回以上であることが分かっているのであれば0回の可能性がないことを示しておけるというのが合理的理由だよ。
*でマッチさせられるとしても後からソース見て混乱するだけだ。慣例といえば慣例だが機能すればいいというものでもない。

236 名前:デフォルトの名無しさん mailto:sage [2020/05/29(金) 19:24:39 ID:ZvrYTh83.net]
>>227
読む人(未来の自分含む)のことを考えれば、可能な限り対象を絞り込んだ方が(設計意図が読み取りやすくて)よい

237 名前:デフォルトの名無しさん mailto:sage [2020/05/29(金) 21:22:17 ID:VNOYZXTT.net]
A+とAA*の効率化の話かと思った
AA*の方が最初のAで最適化される分だけ速いとかなんとか

238 名前:デフォルトの名無しさん mailto:sage [2020/05/29(金) 21:49:09 ID:dZOo8Hm0.net]
>>232
オートマトンを組むので速度は変わらないと思うが

239 名前:デフォルトの名無しさん [2020/06/18(木) 21:13:18.22 ID:jAvldfC1.net]
https://i.imgur.com/ngqWoOX.jpg

上を下としたいのですが、2回に分けることは可能ですが、1回でやれますでしょうか?スラッシュが含まれる場合、そこをエスケープしたいのです
scriptタグ貼ると怒られますので、画像です(´・ω・`)、、、

240 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 22:17:30.24 ID:3Q ]
[ここ壊れてます]



241 名前:D4/INi.net mailto: >>234
正規表現: (<([^>]+)>[^<]*<)(/\2>)
置換   : "$1\$3"
[]
[ここ壊れてます]

242 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 22:21:10.54 ID:3QD4/INi.net]
環境によっては
置換: "$1\\$3"
としないとダメなこともあり

243 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 22:28:45.36 ID:3QD4/INi.net]
>>235 は.NET
>>236 はperl

sed だと
置換: "\1\\\3"

244 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 22:37:34.06 ID:G7fdNfOT.net]
<スクリプト>(ここが変化)</スクリプト>
って感じでスクリプトとスクリプトの間が変化するだけじゃない?

245 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 22:42:36.83 ID:L9lBZl+g.net]
間があるのなら通常1行ではないだろう

246 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 22:48:48.44 ID:kZOKQ/+u.net]
<script>([^\b]*?)</script>
"<script>\1<\\/script>"

247 名前:デフォルトの名無しさん [2020/06/19(金) 02:59:23.82 ID:yAdMpEG/.net]
厚生労働省がガイドラインを発表…「副業」公認の時代が来た?
https://www.iza.ne.jp/kiji/economy/news/200516/ecn20051620000005-n1.html
フリーランス向け報酬即日払いサービス『先払い』受付開始7ヶ月で申込件数1,000件突破
https://prtimes.jp/main/html/rd/p/000000026.000047439.html
副業プラットフォーム「Kasooku」が約1.9億円調達、マッチング件数は5000件突破
https://jp.techcrunch.com/2020/04/30/kasooku-fundraising/
副業がしやすくなった?リモートワークを実施してよかったと思うことTOP5
https://dime.jp/genre/914967/
ポストコロナ時代の人生に副業は欠かせない
https://www.gentosha.jp/article/15457/
副業が社員を強くする コロナ・ショックが加速する新しい雇用の形
https://business.nikkei.com/atcl/gen/19/00149/042300009/
4割以上が「副業意欲向上」「副業しやすくなった」と変化|
新型コロナウイルスの影響下における働き方の実態・意識調査
https://prtimes.jp/main/html/rd/p/000000009.000040832.html

248 名前:デフォルトの名無しさん [2020/06/19(金) 05:44:59.40 ID:LA4wBl0H.net]
https://ideone.com/jkDxgX
ごめんなさい
scriptタグだけではないです
行頭と行末に"を挿入し、スラッシュをコメントアウトしたいのです、、、(´・ω・`)

249 名前:デフォルトの名無しさん mailto:sage [2020/06/19(金) 07:43:33.01 ID:b4DLgcmt.net]
>>242
タグ内にタグ(正確には < )が入らないなら >>235さんので出来るよ
> 行頭と行末に"を挿入し
タグの間に改行が入ることは無いの?タグは関係なしに文字通りに行頭と行末?
環境も分からないし>>2のテンプレ通りに条件を例示して

250 名前:デフォルトの名無しさん mailto:sage [2020/06/19(金) 10:22:50.49 ID:ecFmQJtB.net]
鬼雲
(?<!")(<([^>\s]++).*?>[^\b]*?<)(/\2>)(?!")
"\1\\\3"

制限
ネストの回数分、全置換の繰り返しが必要
<div id=a><div id=b>test</div></div> こういうのも行けるが
id=aの開始タグとid=bの終了タグの組み合わせで置換され次に



251 名前:id=bの始、id=aの終で処理される
<div id=a>"abc"<div id=b>test</div>"def"</div> タグの外側直近に"があるものは否定(先|戻り)読みで"を見ているので無理
[]
[ここ壊れてます]

252 名前:デフォルトの名無しさん [2020/06/19(金) 11:06:15.25 ID:LA4wBl0H.net]
●Regular Expressionの使用環境
mery2.6.7です
●検索か置換か?
置き換えしたいです
●説明
先頭と行頭に"を追加し、/をエスケープしたいです
●対象データ
https://ideone.com/mNblKp

>>243
了解です
 直しました
複数回に分けてやるのが普通なんでしょうか?

253 名前:デフォルトの名無しさん mailto:sage [2020/06/19(金) 11:47:09 ID:x+g7YIVM.net]
>>245
これダブルクォーテーションもエスケープしなきゃいけないんじゃないの?

254 名前:デフォルトの名無しさん [2020/06/19(金) 12:02:33.17 ID:LA4wBl0H.net]
>>246
すみません、勘違いしていました
エスケープ対象は"で、/はエスケープ対象ではないです。

vscodeのスニペットに登録する際に、"をエスケープしないといけないんです
これ、なにげに面倒ですね

255 名前:デフォルトの名無しさん mailto:sage [2020/06/19(金) 14:19:20.57 ID:a2rlVyD0.net]
>>247
HTMLが一般的ではないんだけど
通常はタグと閉じタグとが別の行になることが多いし
あるいは全てが一行というものもあるんだけど
こんな特殊なものにだけ対応でいいのか?
また各タグ毎に""だとダメなのか?
こうすれば行が違ってても大丈夫となるけど
【例】 <h1>h1</h1> → "<h1>"h1"</h1>"

256 名前:デフォルトの名無しさん mailto:sage [2020/06/19(金) 16:14:22.39 ID:/6wBUF7o.net]
自分macなのでmery使えないの試せない
javascriptのマクロが使えるみたいじゃん
正規表現だけだと厳しいかも

var code =`<!DOCTYPE html> 〜省略〜 </html>`
var code = code.replace(/(<.*?>)\n/g, '"$1"\n').replace(/\//g, '\\\/')
console.log(code)

javascriptの置き換え部分だけ書くと上のでいけるはず
meryのマクロの体裁に整えればこれでいけると思う

環境によって\はバックスラッシュだし$もバックスラッシュです

257 名前:デフォルトの名無しさん mailto:sage [2020/06/19(金) 16:33:24.58 ID:x+g7YIVM.net]
var2回もいらんし。
¥nは$にしないとそのスクリプト自体動作失敗してるでしょ。

258 名前:デフォルトの名無しさん mailto:sage [2020/06/19(金) 16:45:53 ID:/6wBUF7o.net]
>¥nは$にしないと

へえそうなんだ
macだとそのままいけるんだよね
var 2回いらねはさすがに難癖だね

259 名前:デフォルトの名無しさん [2020/06/19(金) 16:49:07 ID:LA4wBl0H.net]
>>248
vscodeのスニペット登録はそういうルールのようです
やはり複数回に分けるのが利口でしょうか
プログラムだって何回かに処理を分けますもんね

必須ではないですが、知識として知りたいなあと思った次第です

260 名前:デフォルトの名無しさん mailto:sage [2020/06/19(金) 17:06:56 ID:x+g7YIVM.net]
>>251
無駄にプライドが高そうなタイプだなw
varの意味がわかってれば2回はつけんよ。
それだと最終行に¥nがなかったら処理されない。

https://ideone.com/QOYdYP



261 名前:デフォルトの名無しさん [2020/06/19(金) 18:05:26.45 ID:LA4wBl0H.net]
>>249
自分はpythonでやってみますです

262 名前:デフォルトの名無しさん mailto:sage [2020/06/19(金) 18:07:51.43 ID:a2rlVyD0.net]
ひょっとするけど
タグ関係なく単に各行を""で括るってだけなんじゃ?

263 名前:デフォルトの名無しさん mailto:sage [2020/06/19(金) 18:24:29.90 ID:a2rlVyD0.net]
スニペット登録でググってみたら
jsonで記述と書かれてる
やっぱりタグは無関係で
行の前後を""で括るだけだし、カンマ区切りも要る
"Inner": {
"prefix": "in",
"body": [
"<section id=\"$1\">",
"\t<div class=\"inner\">",
"\t\t$2",
"\t</div><!-- .inner -->",
"</section>"
],
},

264 名前:デフォルトの名無しさん [2020/06/19(金) 18:36:21.20 ID:LA4wBl0H.net]
え、そうなのですか、、、

265 名前:デフォルトの名無しさん mailto:sage [2020/06/19(金) 18:57:56.53 ID:a2rlVyD0.net]
そもそもキー入力の

266 名前:短縮だし、基本はテンプレート登録だ
"Print to console": {
"prefix": "log",
"body": [
"console.log('$1');",
"$2"
],
"description": "Log output to console"

あと、スニペット登録入力用のvscode拡張機能もあるようだ
[]
[ここ壊れてます]

267 名前:デフォルトの名無しさん mailto:sage [2020/06/19(金) 21:44:28 ID:q14TQ9ke.net]
ggrks
https://www.google.com/search?q=vscode スニペット 登録 拡張

268 名前:デフォルトの名無しさん [2020/06/20(土) 00:03:50 ID:D9McnEc6.net]
#一行目
AAAランダム文字列1AAAランダム文字列2BBBランダム文字列3BBBランダム文字列4CCC
#二行目
AAAランダム文字列5BBB

このような文章があって
AAAランダム文字列2BBB
だけを1回の処理で抽出することは可能ですかね?
AAA〜CCCで挟まれ、かつAAA〜BBBの真の最短マッチというのでしょうか
二行目は抽出したくないです

AAA((?!AAA).)*CCC

AAA((?!AAA|BBB).)*BBB

と2回の処理ではできたのですがどうも悔しいです

269 名前:デフォルトの名無しさん mailto:sage [2020/06/20(土) 00:10:55 ID:GUrzgoSo.net]
>>260
AAA.*(AAA.*?BBB).*CCC

270 名前:デフォルトの名無しさん mailto:sage [2020/06/20(土) 00:29:48.90 ID:Spmc6WsU.net]
ランダム文字列の最初(最後)の文字がA(B)だった時は?



271 名前:デフォルトの名無しさん mailto:sage [2020/06/20(土) 00:44:31.03 ID:Spmc6WsU.net]
>>177
画像を右クリック、キャッシュ処理-NGファイル
リンクからでも出来るが再度取得しに行ってしまうのが無駄になるかも

272 名前:デフォルトの名無しさん mailto:sage [2020/06/20(土) 00:44:59.32 ID:Spmc6WsU.net]
誤爆スマン

273 名前:デフォルトの名無しさん [2020/06/20(土) 00:52:46 ID:D9McnEc6.net]
>>261
早速ありがとうございます
ですがそのやり方ですと自分が確認した限り最初のAAA〜CCCまで全て抽出されてしまうようです

言い忘れてしまい申し訳ないのですがperl正規表現を使いgrepで抽出しようとしています

>>262
すいませんわかりやすくAAAと表記していますが実際はhttpsから始まるURLでBBBも複雑な固定文字列ですのでまず連続することはないと思います
あったとしてもそれは仕方ないのでここでは考えないものとしていただければ…

274 名前:デフォルトの名無しさん mailto:sage [2020/06/20(土) 02:01:55.18 ID:GUrzgoSo.net]
>>265
それは正規表現の問題じゃなくgrepの使い方の問題で
キャプチャグループを取り出せてないだけだと思う

pcregrep -o1 'AAA.*?(AAA.*?BBB).*CCC' <input>
とか
grep -oP 'AAA.*?¥K(AAA.*?BBB)(?=.*?CCC)' <input>
とか工夫して

275 名前:デフォルトの名無しさん [2020/06/20(土) 02:35:31.58 ID:D9McnEc6.net]
>>266
失礼しました
grepの使い方が悪かったのですね
そちらの方法で無事抽出できました
ありがとうございました

276 名前:デフォルトの名無しさん [2020/06/21(日) 11:54:44 ID:RSezRE5h.net]
マークダウンのマッチのさせ方について
この2つのうち、上だけをマッチさせたいです
#半角スペースh1
#半角スペース半角スペース半角スペースh1

しかし
^# .*$
だと、両方マッチします。半角スペースが1つの場合のみマッチさせられるでしょうか

277 名前:デフォルトの名無しさん mailto:sage [2020/06/21(日) 12:19:16.08 ID:1s00JmZm.net]
^# [^ ]

278 名前:デフォルトの名無しさん [2020/06/21(日) 14:46:34 ID:RSezRE5h.net]
ありがとうございます

# h
の部分だけマッチします
一文字の繰り返しの部分は、どう指定してるんでしょうか?

279 名前:デフォルトの名無しさん mailto:sage [2020/06/21(日) 14:58:06.74 ID:wEwARBW2.net]
[^ ]+

280 名前:デフォルトの名無しさん [2020/06/21(日) 15:46:15.97 ID:RSezRE5h.net]
だとスペースがマッチしません
ありがとうございます



281 名前:デフォルトの名無しさん mailto:sage [2020/06/21(日) 16:11:36.93 ID:1s00JmZm.net]
>>2

282 名前:デフォルトの名無しさん [2020/06/21(日) 18:30:44.16 ID:RSezRE5h.net]
^#[ ]([^ ].*)$
これでいけたブリ

283 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 20:14:07.00 ID:V+005EHj.net]
chmateから改行コードが見えるレスのNGワードはどうやって登録すればいいですか?

https://i.imgur.com/eWpnlIM.jpg

284 名前:デフォルトの名無しさん [2020/06/28(日) 00:20:52.36 ID:x4PVBa+w.net]
chmateとやらのスレで聞いた方がいいと思うが

285 名前:デフォルトの名無しさん mailto:sage [2020/06/28(日) 20:47:34.83 ID:hqGvkXPW.net]
わかる方教えてください

yyyy/mm/dd の形式で、下記のような0埋め処理をしたいのですが、一発処理方法がわかりません


286 名前:蝸ハにあるファイルを秀丸にてgrep置換予定です。空白がジャマすぐる
今後も処理の必要があるので、できれば一発、無理なら2周かな…

ex.) 2020/ 6/ 1 ⇒ 2020/06/01


([0-9]{4})/( [0-9]|[0-9]{2})/( [0-9]|[0-9]{2})
これで全条件拾えるが処理できないし、下記だと3周しないといけないし

([0-9]{4})/ ([0-9])/([0-9]{2}) ⇒ \1/0\2/\3 //月のみ1桁
([0-9]{4})/([0-9]{2})/ ([0-9]) ⇒ \1/\2/0\3 //日のみ1桁
([0-9]{4})/ ([0-9])/ ([0-9]) ⇒ \1/0\2/0\3 //両方1桁

どなたか、お願いしますm(_ _)m
[]
[ここ壊れてます]

287 名前:デフォルトの名無しさん mailto:sage [2020/06/28(日) 22:32:55.02 ID:pbfRuAan.net]
> 大量にあるファイルを
> 今後も処理の必要がある
スクリプトでやるものじゃね?

以下で2週で出来るが秀丸の正規表現は知らんからヒントにでもして
(?<=\d{4}/) (?=\d/[\d ]\d)
0
(?<=\d{4}/\d\d/) (?=\d)
0

(先|戻り)読みが使えないなら
(\d{4})/ (\d/[\d ]\d)
\1/0\2
(\d{4}/\d\d)/ (\d)
\1/0\2

288 名前:デフォルトの名無しさん mailto:sage [2020/06/28(日) 22:57:55.61 ID:CZLL+74z.net]
>>277
秀丸は使えないのでうまくいくかは不明だが
検索文字列:\d{4}/\K (?=\d/(?:\d\d\D| \d\D))|\d{4}/\d\d/\K (?=\d\D)|\G\d{1,2}/\K (?=\d\D)
置換文字列:0
\Kがダメなら、(?<=\d{4}/)とかに変えてみる(3箇所)
ただし誤爆は起きるかもしれない

289 名前:デフォルトの名無しさん mailto:sage [2020/06/28(日) 23:14:26.22 ID:CZLL+74z.net]
なお誤爆の可能性は、
1) ファイル先頭に、 6/28 xxx で始まっていた場合
2) 2020/ 6/28/ 9 xxx とか引き続き/ 9とかがある場合
3)ファイル末尾で、2020/ 6/28(改行コードなし)で終わっている場合は変換されない
 まあ改良すれば3)は問題なくなるけど

290 名前:デフォルトの名無しさん mailto:sage [2020/06/28(日) 23:16:24.29 ID:CZLL+74z.net]
2)は間違い 2020/ 6/ 8/ 9 とかの場合に訂正



291 名前:デフォルトの名無しさん mailto:sage [2020/06/28(日) 23:19:24.85 ID:CZLL+74z.net]
あ、1)も間違ってる
6/ 8 xxxに訂正(空白なしで数字1文字で始まる場合)

292 名前:デフォルトの名無しさん mailto:sage [2020/06/29(月) 00:31:06.80 ID:G5zcTgI1.net]
秀丸なら普通にマクロでプログラム書いた方が楽じゃない?

293 名前:デフォルトの名無しさん mailto:sage [2020/06/29(月) 00:32:15.99 ID:1iNHQcBG.net]
1)は、\G(?!^)というふうに先頭の場合を除けばいける
残りの2)3)は工夫次第

294 名前:デフォルトの名無しさん mailto:sage [2020/06/29(月) 16:30:01.33 ID:sN5cgPC+.net]
難しく考えなくても置換対象以外に"/ "が無いなら
/[ ]
/0
で一発

295 名前:デフォルトの名無しさん mailto:sage [2020/06/29(月) 16:59:50.16 ID:0ldK0o0F.net]
これでできないかい?
FIND:(?<=¥d{4}/[ ¥d]¥d/) (¥d)|(?<=¥d{4}/) (¥d)(?=/)
REP:0$1$2

296 名前:デフォルトの名無しさん mailto:sage [2020/06/29(月) 17:05:41.11 ID:0ldK0o0F.net]
こっちのほうが確実か。
FIND:(?<=¥d{4}/) (¥d)(?=/[ ¥d]¥d)|(?<=¥d{4}/[ ¥d]¥d/) (¥d)
REP:0$1$2

297 名前:デフォルトの名無しさん mailto:sage [2020/06/29(月) 17:28:03.91 ID:sN5cgPC+.net]
>>287
それ試した?それが可能な処理系って何?
選択子で両方を対応するなら>>279の用に\G使わないとスペースが両方にある場合に失敗するぞ

298 名前:デフォルトの名無しさん mailto:sage [2020/06/29(月) 17:41:18.50 ID:0ldK0o0F.net]
>>288
pythonでもCotEditorでもいけるが?

https://ideone.com/zhrSCV

299 名前:デフォルトの名無しさん mailto:sage [2020/06/29(月) 17:54:20 ID:TUm10+y/.net]
277 です
皆さんありがとうございます!
レベルが低くて理解できないのもありますが、勉強のためにしっかり精査してみます

>>285
まさにそれですわ
てゆーか別に正規表現使わなくても実現できるという罠
勉強になりました m(_ _)m

改めましてありがとうございました。

300 名前:デフォルトの名無しさん mailto:sage [2020/06/29(月) 18:05:49.23 ID:sN5cgPC+.net]
>>289
で?質問者はなんて書いている?
pythonとかCotEditorとか書いてあるかい?
質問者の環境で失敗する式を書くならせめて
pythonでならこれで出来る、くらい書けやks



301 名前:デフォルトの名無しさん mailto:sage [2020/06/29(月) 18:09:28.38 ID:0ldK0o0F.net]
>>291
質問者が文句

302 名前:を言うならともかく、なんでお前が切れてるんだよ。
自分が正解書いてるのに余計なこと書くなって言いたいのか?www
カルシウムとっとけよ
[]
[ここ壊れてます]

303 名前:デフォルトの名無しさん mailto:sage [2020/06/29(月) 18:13:56.28 ID:sN5cgPC+.net]
>>290
なんとなくそうじゃないかなーと思った
俺も昔同じ罠にハマった事あるからw
解決して何より

304 名前:デフォルトの名無しさん mailto:sage [2020/06/29(月) 18:25:35.41 ID:sN5cgPC+.net]
>>292
あぁ?理由なら書いてんだろ
おまえのような底意地の悪いゴミカスが気に食わないからじゃ
さっさ死ね

305 名前:デフォルトの名無しさん mailto:sage [2020/06/29(月) 23:31:59 ID:G5zcTgI1.net]
質問者そっちのけの場外乱闘にワロタ

306 名前:デフォルトの名無しさん mailto:sage [2020/06/30(火) 01:41:09.48 ID:ZFF7tVch.net]
だが、そこがいい

307 名前:デフォルトの名無しさん mailto:sage [2020/06/30(火) 13:15:03.17 ID:tIigavUn.net]
>>279で\Gの使い方が分かった。thx

308 名前:デフォルトの名無しさん mailto:sage [2020/07/02(木) 02:54:39.72 ID:fxvoVb8t.net]
アプリからファイアウォールにまで使われる正規表現を標的にした「ReDoS攻撃」とは?
https://gigazine.net/news/20200701-redos-cheet-sheet/

ネット中は正規表現を使わないではだめなのか
でもブラウザも中で使っているだろうし

309 名前:デフォルトの名無しさん [2020/07/03(金) 10:38:52.53 ID:fe+b4Rno.net]
正規表現についてですが、このhtmlの置き換えは一発でできますか?
この前からいろいろ試してるんですが、、
https://ideone.com/vpxoNS

行頭と行末にダブルクォーテーションをつけ、urlの部分はエスケープしています。
vscodeでスニペットを登録する際に、このようにダブルクオーテーションを使用する必要があるのです。

310 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 11:07:40.28 ID:cg7dcvev.net]
(^<.*?)(".*?)(".*>)$
"$1¥¥$2¥¥$3"
↑vscode内の検索置換

それと全く同じパターンであれば可能だが、dqが複数出てくる場合はできない。
他のパターンも考えたら、
1.dqのみエスケープ、
2.行頭行末にdqをつける
の2アクションにするか、vscodeでそれ用のjsでも書いて処理するか。

スニペット登録したいものをまとめて書き出しておいて2アクションで処理しても大して手間は変わらんだろ。



311 名前:デフォルトの名無しさん [2020/07/03(金) 12:32:41.29 ID:fe+b4Rno.net]
そうですね 2回でやります

312 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 13:00:37.53 ID:hVBUXcHj.net]
Ruby で、" を、\" に置換してから、
冒頭・末尾に、" を追加する

str = '"ja"'
str.gsub!( '"', '\"' )

puts '"' + str + '"'
#=> "\"ja\""

313 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 13:11:32.91 ID:yfao6bm4.net]
VScodeのプラグインにSnippet Generatorてのがあるみたいだがそれじゃダメなん?

314 名前:302 mailto:sage [2020/07/03(金) 14:28:11.33 ID:hVBUXcHj.net]
漏れなら、Ruby, PowerShell で、
クリップボード経由で変換するスクリプトを書いて、

ダブルクリックで起動できるように、起動部分をVBS で書くかな?

315 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 14:33:24.34 ID:zEGBQA4b.net]
正規表現よりもJSON.strinfigy()を使ったほうが簡単
スニペット用のJSONを出力すればいいだけだからJSでもRubyでも好きなの使えばいい

316 名前:デフォルトの名無しさん mailto:sage [2020/07/13(月) 00:17:50.71 ID:e/I4Ji0p.net]
JavaScript

const kaoru = '薫'

'[薫子]'.match(`[${kaoru}]`)
'[薫子]'.match(`\[${kaoru}\]`)
'[薫子]'.match(new RegExp(`[${kaoru}]`))
'[薫子]'.match(new RegExp(`\[${kaoru}\]`))

全てマッチしてしまうようですが、マッチさせたくありません
[ や ] そのものを文字として扱って判定するにはmatchの引数をどうすればよいでしょうか

317 名前:デフォルトの名無しさん mailto:sage [2020/07/13(月) 00:49:50.36 ID:lkNbIdQ1.net]
>>306
それはJSの質問やろ
RegExpコンストラク

318 名前:ターを使って2回エスケープ []
[ここ壊れてます]

319 名前:デフォルトの名無しさん mailto:sage [2020/07/13(月) 19:20:45.29 ID:YirsSrYP.net]
教えてください。基本的な質問で恐縮です。

20200706T030000Z
SUMMARY:打合せ
LOCATION:中野
DTEND:20200706T043000Z

から、
$1 0300
$2 打合せ
$3 中野
$4 0430
を抜き出すにはどのようにすればよいでしょうか。

320 名前:デフォルトの名無しさん mailto:sage [2020/07/13(月) 19:49:46.79 ID:GfOrWnDk.net]
^\d{8}T(\d{4}).*+\nSUMMARY:(.*+)\nLOCATION:(.*+)\nDTEND:\d{8}T(\d{4})



321 名前:デフォルトの名無しさん mailto:sage [2020/07/14(火) 13:34:31.12 ID:h5j+nt7i.net]
今まで何となくで使ってきたけどキャプチャの変数って式に対し1つしか用意されず
部分式呼び出しや量指定子の繰り返しで増やされずに上書きするみたいですね

^(?<y>2020[01]\d[0-3]\dT([0-2]\d[0-5]\d)00Z)(?:\n[^:\n]++:(.*+)){2}\n[^:]++:\g<y>
\1 \2 \3 \4 \5 \6
20200706T043000Z 0430 中野___

どの環境でもこういう仕様なの?

322 名前:デフォルトの名無しさん mailto:sage [2020/07/14(火) 13:41:52 ID:tlUY963U.net]
>>310
深く考えてなかったがそういうもんだと思ってた
キャプチャグループが増殖するとは考えもしなかった

323 名前:デフォルトの名無しさん mailto:sage [2020/07/14(火) 13:50:15.90 ID:tlUY963U.net]
もしキャプチャグループが増えるとして
与えられた文字列によって増える順番が異なってくることが考えられるしね

324 名前:デフォルトの名無しさん mailto:sage [2020/07/14(火) 21:21:06.51 ID:h5j+nt7i.net]
キャプチャしたけりゃ繰り返しや\gで省略するなってことなんだろうけど
気になって出来る方法無いか調べてたら鬼雲で捕獲履歴参照なるものがあった
デフォでは無効になってるみたいだけど

ttps://github.com/k-takata/Onigmo/blob/master/doc/RE.ja
補記 5. 実装されているが、既定値では有効にしていない機能
+ 捕獲履歴参照
 (?@...) と (?@<name>...)
 例. /(?@a)*/.match("aaa") ==> [<0-1>, <1-2>, <2-3>]
 使用方法は、sample/listcap.cを参照
 有効にしていない理由は、どの程度役に立つかはっきりしないため

325 名前:デフォルトの名無しさん mailto:sage [2020/07/20(月) 23:26:29.84 ID:jWd+3fJB.net]
●Regular Expressionの使用環境
サクラエディタ

●検索か置換か?
置き換え

●説明
3の倍数行あるテキストを、3行ごとに1行にまとめたい

●対象データ ※対象データは、必ず半角英数字です。
e
A8
11A9
c
2
LB5
3
d
8X5

●希望する結果
e A8 11A9
c 2 LB5
3 d 8X5

よろしくお願いいたします。

326 名前:デフォルトの名無しさん mailto:sage [2020/07/21(火) 00:07:21.07 ID:HQA5x8Lv.net]
>>314
サクラエディタはよく知らないけど
一般的な正規表現なら /(.*?)¥n(.*?)¥n(.*?¥n)/g を "$1 $2 $3”で置換すればいいと思う

327 名前:デフォルトの名無しさん mailto:sage [2020/07/21(火) 10:14:18.12 ID:7bBDhy0Z.net]
(?:^.*+|\G.*+[\r\n]+.*+)\K[\r\n]+(.*+)[\r\n]+
_\1_
"_" は半角sp
最終行末尾に改行が無くても可

328 名前:デフォルトの名無しさん mailto:sage [2020/07/21(火) 10:18:39.84 ID:7bBDhy0Z.net]
[\r\n]+
は空行がある場合にズレるから使ってる改行文字に直して
CRLFなら\r\n

329 名前:デフォルトの名無しさん mailto:sage [2020/07/25(土) 05:22:11.92 ID:ygqLeqBq.net]
質問です。デリミタが基本的に「/」が選ばれるのなぜですか?慣例だから?

330 名前:デフォルトの名無しさん mailto:sage [2020/07/25(土) 08:47:52 ID:1TMz0fAY.net]
人間というのは楽をしようとする生き物なんだ



331 名前:デフォルトの名無しさん mailto:sage [2020/07/25(土) 17:47:34.31 ID:bnVhPJSY.net]
>>318
ここに来るような人は論理的思考をすると思ってたんだけど、
慣例とか持ち出す奴まで来るのな
|や@なんかと比べれば分かるだろ

332 名前:デフォルトの名無しさん [2020/07/26(日) 19:17:16.43 ID:2z9rM+9+B]
「ブラック企業社員」のお助けアプリが誕生 開発したのは22歳金髪大学生、開発のきっかけとは?
https://news.yahoo.co.jp/articles/b9d5e3b84e4aa78fab64d3eb8e0c02f72911287e
レシート買い取りアプリONEの17歳起業家、サービス一時停止から「怒涛の3カ月」で気づいたこと
https://www.businessinsider.jp/post-175983
ビジネス版マッチングアプリ「yenta(イェンタ)」全国展開 開始!
https://prtimes.jp/main/html/rd/p/000000023.000021544.html
ギフティング「TANP」運営がGCPほかから5億円調達
1日1200件の「リアルギフト」送付も可能に、U25起業家の新たな挑戦
https://thebridge.jp/2019/08/gift-ec-tanp-raised-500m-yen-from-gcp
人はこうすれば“ハマる”、源流はゲーマー視点の「幸せ」
https://project.nikkeibp.co.jp/behealth/atcl/feature/00005/012100006/
アプリ開発での起業は難しくない!成功するために覚えておくべきこと
https://www.biz.ne.jp/subject/blog/2004433/
【稼ぎ方が知りたい!】アプリの開発の収入って実際どれくらい?
https://itpropartners.com/blog/1657/
ネット関連事業で起業した成功例8選!ネットで成功するには○○が重要!?
https://www.official.or.jp/internet-entrepreneurship-success/

333 名前:デフォルトの名無しさん mailto:sage [2020/07/27(月) 13:00:24.19 ID:NlQGNze0.net]
●Regular Expressionの使用環境
Ruby2.5
●検索か置換か?
置換
●説明
スペースを削除したい。ただしダブルクオーテーション内は処理対象から除外
●対象データ
ABC, DE F,"G HI"
●希望する結果
ABC,DEF,"G HI"
ダブルクオーテーション内以外に対して処理するって結構ありそうだけど見つからないような・・

334 名前:デフォルトの名無しさん mailto:sage [2020/07/27(月) 13:15:08.91 ID:GIKub5S5.net]
そのフォーマット通りなのか
あるいは任意でダブルクォーテーションの処理をするのかで変わってくるな

335 名前:デフォルトの名無しさん mailto:sage [2020/07/27(月) 14:36:52.94 ID:Dng4VfHm.net]
[ ](?![^",\n]*+"(?:,|$))

336 名前:デフォルトの名無しさん mailto:sage [2020/07/27(月) 15:27:53.85 ID:OciGuojB.net]
(?>".*?"|[^"スペース]++)*+\Kスペース
を削除

337 名前:デフォルトの名無しさん [2020/07/28(火) 23:58:50.39 ID:dH+Aps1K.net]
HTML中に

<a href="/a.html"><img src="test.jpg"></a>



<img src="test.jpg">

リンクに囲まれた test.jpg または、画像だけののどちらかがあって。
どちらにも引っかかる正規表現が書けません。

PHPの正規表現キボンヌ
自力では2つの正規表現を書いてしのいでいるので、一つで対応できますか?


現状は

リンクに囲まれた画像
/(^.*)(<a href=".*?>\n*<img .*?test.jpg.*?>\n*<\/a>)(.*$)/s

画像のみ
/(^.*)(<img .*?test.jpg.*?>)(.*$)/s

で対応しています。

338 名前:デフォルトの名無しさん mailto:sage [2020/07/29(水) 01:26:58.01 ID:W2ZwK0DF.net]
/<img[^>]+test\.jpg[^>]+>/g

JavaScript では、これで両方に一致する。
[^>]+ で、> 以外の文字を、1文字以上。
g で、すべての箇所に一致する

test.jpg だと、. は任意の1文字を表すから、意味が異なる。
ドットという文字に一致させるには、\. とエスケープが必要

339 名前:デフォルトの名無しさん mailto:sage [2020/07/29(水) 01:58:17.28 ID:yfMsWFOq.net]
aタグ含

340 名前:めてマッチさせたいんでね?
それでも単純に|で繋げば済む話だと思うけど
[]
[ここ壊れてます]



341 名前:デフォルトの名無しさん mailto:sage [2020/07/29(水) 03:04:25.73 ID:Qbap9rXN.net]
あってもなくてもいいものは末尾に?を付ければいいよ
((<a [^>]++>)?(?:<img[^>]+test\.jpg[^>]+>)(</a>)?)

342 名前:デフォルトの名無しさん mailto:sage [2020/07/29(水) 05:46:17.91 ID:z6Fnx3oM.net]
>>9
これ面白いな。プログラミング授業に採用すべき。

343 名前:デフォルトの名無しさん [2020/07/29(水) 11:18:17.76 ID:RU44SEhN.net]
>>327
ありがとうございます!
[^>]+ って発想がありませんでした・・。

>>329
ありがとうございます。
++ のところは一つですよね?

こんな感じをベースにやってみようと思います。
https://regexper.com/#%7C%28%28%3Ca%20%5B%5E%3E%5D%2B%3E%29%3F%28%3F%3A%3Cimg%5B%5E%3E%5D%2Btest%5C.jpg%5B%5E%3E%5D%2B%3E%29%28%3C%5C%2Fa%3E%29%3F%29%7C

344 名前:デフォルトの名無しさん mailto:sage [2020/07/29(水) 11:23:00.16 ID:d73w3j+s.net]
>>326
こういうの正規表現じゃなくcss selectorやxpath使った方が簡単だよ

345 名前:デフォルトの名無しさん mailto:sage [2020/07/29(水) 14:14:44.18 ID:8IMt+CxM.net]
> リンクに囲まれた test.jpg または、画像だけののどちらかがあって
> /(^.*)(<a href=".*?>\n*<img .*?test.jpg.*?>\n*<\/a>)(.*$)/s
> /(^.*)(<img .*?test.jpg.*?>)(.*$)/s

^(?=.*test\.jpg).++$
こういう事では?

346 名前:325 [2020/07/29(水) 14:47:56.12 ID:RU44SEhN.net]
>>332
ありがとうございます。
たしかにその2つのほうがphpソースとしては分かりやすくなりそうですね。

347 名前:デフォルトの名無しさん mailto:sage [2020/07/31(金) 01:03:19 ID:sgil418T.net]
>>330
前半はいいけど、後半がきつい
総当たりで力技ぐらいしか思いつかんわ・・・

348 名前:デフォルトの名無しさん [2020/08/01(土) 06:04:54.43 ID:Wz14ZhNZ.net]
cssなんですが、
margin:10px;padding:10px;border:1px solid red;backgroun-color:red;font-size:16px;
というものがあったとして、正規表現でborderのプロパティと内容だけを削除できないでしょうか?
欲しい結果どす
margin:10px;padding:10px;backgroun-color:red;font-size:16px;

ちなみにborderの値は
1px red solidの場合もあれば
solid 1px redの場合もあります

つまり、borderプロパティに不随する値を消したいのです(´・ω・`)

349 名前:デフォルトの名無しさん mailto:sage [2020/08/01(土) 06:13:27.50 ID:xL8Di7oE.net]
〜; か、;〜; の、〜の中に、border という文字列が、あれば良いのか?

350 名前:デフォルトの名無しさん [2020/08/01(土) 06:32:02.40 ID:Wz14ZhNZ.net]
どういうことですか?
borderプロパティとその値を削除したい感じです
border(プロパティ):red 1px solid(値);



351 名前:デフォルトの名無しさん mailto:sage [2020/08/01(土) 06:38:27 ID:hnL660kY.net]
border[^;\n]++;

352 名前:デフォルトの名無しさん mailto:sage [2020/08/01(土) 06:52:53.24 ID:GqyTFtiM.net]
\rも入れといたほうがいいだろ

353 名前:デフォルトの名無しさん mailto:sage [2020/08/01(土) 06:59:35.99 ID:GqyTFtiM.net]
あとborder-color:〜とかも消えちゃうね

354 名前:デフォルトの名無しさん mailto:sage [2020/08/01(土) 07:21:39.09 ID:GqyTFtiM.net]
あとプロパティじゃなくて値やコメントにborderって入る可能性が無いかな?
\bborder\s*:[^;}\r\n]++;?
ぐらいがいいのではないかな
これでもxx-borderとかプロパティがあったり?(無いだろうけど)
、また値を改行されて書かれたりしたらダメなんだが

355 名前:デフォルトの名無しさん mailto:sage [2020/08/01(土) 07:38:14 ID:GqyTFtiM.net]
処理系がかかれてないので++がダメだったら+に代えるように

356 名前:デフォルトの名無しさん [2020/08/01(土) 09:01:52.60 ID:Wz14ZhNZ.net]
すみません
meryです

357 名前:デフォルトの名無しさん [2020/08/01(土) 12:04:03.32 ID:kkqe9vdZ.net]
border(-[a-z]+)?:[^;]+;

358 名前:デフォルトの名無しさん [2020/08/01(土) 18:09:27.98 ID:Wz14ZhNZ.net]
ありがとうございます
できましたが、解説サイトありませんか?
記号がヒットしないもんで、、、

359 名前:デフォルトの名無しさん mailto:sage [2020/08/01(土) 18:40:27.24 ID:hnL660kY.net]
https://github.com/k-takata/Onigmo/blob/master/doc/RE.ja

360 名前:デフォルトの名無しさん [2020/08/01(土) 19:21:49 ID:kkqe9vdZ.net]
(自分の投稿分だけ)
[]は[]内に挙げた任意の1文字
+は直前の文字だけで構成される文字列,*は0文字以上、+は1文字以上
つまり[a-z]+はa-zの範囲の文字だけで構成される長



361 名前:さ1以上の任意の文字列
?は直前の文字(列)がないものも対象(あってもなくてもいいということになる)

[]内先頭の^は否定
つまり[^;]は;以外の任意の文字

まとめると:の前は
border, border-width等borderファミリーまとめて対象にしている
:の後は:直後〜最初の;までが対象

>>345では:以前にスペースがあると対象にならない
[]
[ここ壊れてます]

362 名前:デフォルトの名無しさん [2020/08/01(土) 22:21:06.56 ID:Wz14ZhNZ.net]
丁寧にありがとうございます。難しいですね。
border(-[a-z]+)?:の部分はなぜグループ化する必要があるんでしょうか?

363 名前:デフォルトの名無しさん mailto:sage [2020/08/01(土) 22:43:25.14 ID:LBbA9Kf+.net]
>>349
それは>>348
> まとめると:の前は
> border, border-width等borderファミリーまとめて対象にしている

border:を対象にするために
border(-[a-z]+)?:というborder《【頭に-付いたa-z任意文字列1文字以上】があってもなくても》:指定になってる

>>348のいってる空白云々はborder :のようにrと:の間に空白あるとマッチしないという意

元cssの書き方次第で漏れるからあまり向いてるとは言えない気がする
空白を気にして\s?や[:blank:]?を間に入れ込むのも精神的にツラい
その場限りならいいけど

364 名前:デフォルトの名無しさん [2020/08/01(土) 22:57:20.65 ID:Wz14ZhNZ.net]
borderとborder-styleなどを対象にする場合、括弧を使うことで不足分を補うというイメージでしょうか?
borderとborder-styleという指定になってるんですね

365 名前:デフォルトの名無しさん mailto:sage [2020/08/01(土) 23:05:44.88 ID:LBbA9Kf+.net]
>>351
border(-[a-z]+)?: の ? をどこに効かせるか
border-([a-z]+)?: だと - が必須になる(- に ?が効かない)ので border: にマッチしない(border-abcdef: にはマッチする)

正規表現 入門 でググってそれ見ながら ↑のパズルで遊んでみたら?

366 名前:デフォルトの名無しさん mailto:sage [2020/08/01(土) 23:08:11.58 ID:oWJPeiSz.net]
border-radiusも忘れないであげてください...

367 名前:デフォルトの名無しさん mailto:sage [2020/08/01(土) 23:12:41.55 ID:+HD/AULr.net]
説明が下手だと良く言われるでしょ?
笑えるくらいグダグダなのなw

368 名前:デフォルトの名無しさん mailto:sage [2020/08/01(土) 23:38:46.09 ID:o0eKxhHR.net]
>>354
はいどうぞw

369 名前:デフォルトの名無しさん [2020/08/02(日) 04:53:04 ID:Q2aVGOnZ.net]
Mery(鬼雲の仕様?)なら
border\s*(-[a-z]+)?:[^;]+;
で:前の改行や空白文字も対象にしてくれるけど
エンジンによっては対象にならないし
可能なパターン全てに対応させようと思ったら正規表現メモになってしまう(相当面倒だということ)

どーでもいいけど
[-a-z]か(-[a-z]+)*にした方が良かったか
border-なんとか-かんとか
みたいなのもある?

370 名前:デフォルトの名無しさん [2020/08/02(日) 07:34:01.59 ID:WI1GGX9r.net]
最小一致のやり方を教えて下さい
<h1>aaa</h1><h1>aaa</h1>
最初のh1要素だけ取り出すことはできないでしょうか?

<h1>(*?)</h1>

これではだめです。

>>352
ありがとう
手を動かします



371 名前:デフォルトの名無しさん mailto:sage [2020/08/02(日) 07:46:47 ID:afjdMLlX.net]
<h1>[^>]+h1>

[^>]+ は、> 以外の文字が、1文字以上

372 名前:デフォルトの名無しさん mailto:sage [2020/08/02(日) 08:08:51.02 ID:7mfh4V7b.net]
<h1>(?>.*?</h1>)
<h1>(?>(?s).*?</h1>)
<h1>(?~</h1>)</h1>

<h1><a id="abc">abc</a>
</h1>

373 名前:デフォルトの名無しさん mailto:sage [2020/08/02(日) 08:08:54.84 ID:SCuZm8dn.net]
^.*?<h1>\K.*?(?=</h1>)

374 名前:デフォルトの名無しさん mailto:sage [2020/08/02(日) 08:16:49.14 ID:piHYqXfk.net]
(?~</?+h1>)(?=</h1>)

375 名前:デフォルトの名無しさん mailto:sage [2020/08/02(日) 08:18:05.24 ID:1ddBclsD.net]
あ、ダメだこれ>>361

376 名前:デフォルトの名無しさん [2020/08/02(日) 10:46:18.27 ID:WI1GGX9r.net]
>>358,359,360
全部だめでした
ちなみにmeryです
いつもいい忘れます
ごめんなさい

377 名前:デフォルトの名無しさん [2020/08/02(日) 10:54:32.92 ID:WI1GGX9r.net]
>>358
これでいけました
しかし順番にマッチするんですね

378 名前:デフォルトの名無しさん [2020/08/02(日) 10:55:57.37 ID:WI1GGX9r.net]
順番に置き換えていくならいいですが、全て置き換えを行う場合
>>358だと出来ないですね

379 名前:デフォルトの名無しさん mailto:sage [2020/08/02(日) 11:08:50.52 ID:SCuZm8dn.net]
削除
^

380 名前:.*?\K<h1>.*?</h1>(.*)
\1

ABCに置換
ABC\1
[]
[ここ壊れてます]



381 名前:デフォルトの名無しさん mailto:sage [2020/08/03(月) 01:53:48.18 ID:p6SF3tC+.net]
すべてにマッチする、オプションは無いの?

382 名前:デフォルトの名無しさん [2020/08/03(月) 03:15:13 ID:/ZQCQ5dx.net]
>>366
ありがとう
むずかしい

383 名前:デフォルトの名無しさん [2020/08/05(水) 13:11:50.02 ID:zXYtyxDC.net]
●Regular Expressionの使用環境
サクラエディタ

●検索か置換か?
置換

●説明
空白を除去するのに\sで検索してますが
アルファベットの文字間では空白を残したい

●対象データ
ジャッキー チェン:Jackie Chan
●希望する結果
ジャッキーチェン:Jackie Chan

384 名前:デフォルトの名無しさん mailto:sage [2020/08/05(水) 14:03:13.77 ID:xp5DSzK/.net]
スペースの直前直後が[a-zA-Z]ならマッチせず
それ以外ならマッチするという正規表現でいいのかな?
もうちょっと仕様を詰めたほうがいい気がする

John Paul IIの2つ目のスペースは削除?
George W. Bushの2つ目のスペースは削除?

385 名前:デフォルトの名無しさん mailto:sage [2020/08/05(水) 14:03:44.33 ID:UoH2gIZd.net]
(?<=[^A-Za-z])\s(?=[^A-Za-z])|(?<=[^A-Za-z])\s(?=[A-Za-z])|(?<=[A-Za-z])\s(?=[^A-Za-z])

386 名前:デフォルトの名無しさん [2020/08/05(水) 16:38:08.92 ID:zXYtyxDC.net]
>>370
スペースの前後ともアルファベットならマッチせず、それ以外ならマッチするです。
その他の条件はありません。ちなみに行頭と行末のスペースにはマッチさせたいです。

>>371
ありがとうございます。行頭が残るようですが希望のことができました。

387 名前:デフォルトの名無しさん mailto:sage [2020/08/05(水) 16:57:46.08 ID:UoH2gIZd.net]
>>372
^\s++|\s++$|(?<=[^A-Za-z])\s(?=[^A-Za-z])|(?<=[^A-Za-z])\s(?=[A-Za-z])|(?<=[A-Za-z])\s(?=[^A-Za-z])

388 名前:デフォルトの名無しさん mailto:sage [2020/08/05(水) 17:13:59 ID:xp5DSzK/.net]
ORでは1つで良いような

(?<![a-zA-Z])¥s|¥s(?![a-zA-Z])

389 名前:デフォルトの名無しさん mailto:sage [2020/08/05(水) 20:14:19.67 ID:TJuHD2ix.net]
ゼロ個でも
\s(?!(?<=[A-Za-z].)(?=[A-Za-z]))

390 名前:デフォルトの名無しさん mailto:sage [2020/08/05(水) 21:50:35.87 ID:xp5DSzK/.net]
>>375
へぇーー
速度的にも有利っぽいしこのパターン覚えとくわ



391 名前:デフォルトの名無しさん mailto:sage [2020/08/06(木) 11:27:45.13 ID:mqEUv0B4.net]
成り立ってるそれ?

392 名前:デフォルトの名無しさん mailto:sage [2020/08/06(木) 11:59:29.23 ID:04L3Tvl2.net]
\s(?!(?<=[A-Za-z].)[A-Za-z])
肯定先読み要らないよね。ある方が見やすい気がしなくもないけど

393 名前:デフォルトの名無しさん mailto:sage [2020/08/06(木) 16:39:38.24 ID:LCybI18e.net]
374の「選択子がゼロ個」と「集合の否定」の話じゃなければアサーションを入れ子にする必要もないのですよ
\s(?>(?![A-Za-z])|(?<![A-Za-z].))

394 名前:デフォルトの名無しさん [2020/08/07(金) 17:33:11.23 ID:wa05pmNjM]
【予測】2020年YouTube業界はこうなる。変化の波に乗ろう!
https://www.youtube.com/watch?v=GvnwFnCejME
【大予想】ビジネスYouTube界はこうなる。
https://www.youtube.com/watch?v=8UzEhesDDFY
【全て公開】ビジネスYouTuberの成功において最も大切な3つの能力
https://www.youtube.com/watch?v=yvn3cdLEWTU
YouTubeをやらない人=ビジネスやらない人
https://www.youtube.com/watch?v=yqHx58LNl7U
祝10万人【登録者の質が高すぎ!脅威的スピード】ビジネス系YouTuberの桁違い収益大公開!
https://www.youtube.com/watch?v=MUEIEFpB3_k
ビジネス系YouTuberの収益と3つの稼ぎ方を紹介
https://www.youtube.com/watch?v=bMPKMHVeNps
YouTubeで稼げるジャンルを解説する【パクって、すぐに始めよう】
https://www.youtube.com/watch?v=7TigA1iQ8LM&t=469s
YouTubeで「効率的に稼ぐ仕組み」を解説する【成功例は、EXILEです】
https://www.youtube.com/watch?v=RDouG0_uxPM&t=100s
YouTubeを伸ばすコツ【5つの本質論/初心者向けのセミナーです】
https://www.youtube.com/watch?v=fn-LxP9Unmc
【悲報】YouTuberはマジで難しいので、ほぼ挫折すると思う【無理ゲー】
https://www.youtube.com/watch?v=iKREw5p0Yqc
ビジネス系YouTubeチャンネルは一刻も早く開設するべき
https://www.youtube.com/watch?v=RB-OnqQhth8

395 名前:デフォルトの名無しさん [2020/08/10(月) 00:32:29.1 ]
[ここ壊れてます]

396 名前:5 ID:foQnjRqn.net mailto: ●使用環境
RegEx Lab(iOSアプリ,ICU Regex)
iOSショートカットアプリ

●検索か置換か?
検索

●説明
以下の2パターンのデータから"あいうえお"を取り出す正規表現を教えてください。
自分なりに考えたのですが↓ではうまくいきませんでした。
名前(?::<.+?>|:)(.*?)(?:</a>|$)
ちなみにCotEditorでは↑の正規表現でも検索できました。

●対象データ1

<div class="abcde_abcde">
名前:あいうえお
</div><!--abcde_abcde-->


●対象データ2

<div class="abcde_abcde">
名前:<a href="https://www.google.com">あいうえお</a>
</div><!--abcde_abcde-->


●希望する結果
あいうえお
[]
[ここ壊れてます]

397 名前:デフォルトの名無しさん mailto:sage [2020/08/10(月) 01:07:48.09 ID:F9d2D5aE.net]
>>381
RegEx Labちょうど使ってたので
https://i.imgur.com/4xeRITQ.png

398 名前:デフォルトの名無しさん mailto:sage [2020/08/10(月) 01:16:40.29 ID:rwR0rEzu.net]
>>381
$が行末にマッチしてないだけなら、単に改行\Rに置き換えてみてもいいし正規表現の頭におまじない(?m)を足してみてもいい
置換じゃなくて検索なら
(?<=名前:<[^>]{0,99}?>).*?(?=</a>)|(?<=名前:)(?!<).*+

399 名前:デフォルトの名無しさん [2020/08/10(月) 01:36:35 ID:foQnjRqn.net]
>>382
>>383
こんなに色々なやり方があるんですね……勉強になります。
無事検索できるようになり本当に助かりました。
ありがとうございました!

400 名前:デフォルトの名無しさん [2020/08/11(火) 13:59:29.59 ID:JW3Ec0IY.net]
grepのperl正規表現オプションを使ってURLのホスト名を抽出したいです

https://mevius.5ch.net/test/read.cgi/tech/1568640311/l50
www.google.co.jp/

このスレだったら”mevius”
googleなら”www”
「https://」or「http://」と「.」に挟まれた文字列の最短一致でできそうなのですがなぜか上手くいきません

1文字に挟まれたパターンは検索して出てくるのですが、複数文字に挟まれたパターンはあまり出てこなくて、この際はっきりしたいので「〇〇〇と△△△に挟まれた文字列の中身のみを最短一致で抽出」パターンも教えてください



401 名前:デフォルトの名無しさん mailto:sage [2020/08/11(火) 14:15:33 ID:47EO3/0I.net]
>>385
/https?:\/\/([^./]+)/
grepもperlも知らないけどこんな感じでどうや
△△△が一文字なら△を含まない文字の連続で取るといいと思う
複数文字の場合は知らない

402 名前:デフォルトの名無しさん mailto:sage [2020/08/11(火) 14:17:58 ID:oEzBqY+p.net]
grep知らずにここに居る人が存在するのか…

403 名前:デフォルトの名無しさん [2020/08/11(火) 14:33:07.25 ID:JW3Ec0IY.net]
>>386
早速ありがとうございます
ですがそのやり方ですとgrepでは抽出できませんでした

△△△は複数の種類の文字ですね言葉足らずでした
正しくは「ABC」と「DEF」に挟まれた文字みたいなものですね

404 名前:デフォルトの名無しさん mailto:sage [2020/08/11(火) 14:36:19.90 ID:giB5l2E5.net]
$ cat input.txt
https://mevius.5ch.net/test/read.cgi/tech/1568640311/l50
www.google.co.jp/

$ grep -Po '(?<=:\/\/).+?(?=\.)' input.txt
mevius
www

405 名前:デフォルトの名無しさん mailto:sage [2020/08/11(火) 14:37:41 ID:47EO3/0I.net]
>>388
できなかったか、すまん
これは自分には無理だわ
知識もないのにでしゃばるべきじゃなかったな

406 名前:デフォルトの名無しさん mailto:sage [2020/08/11(火) 14:45:43.81 ID:giB5l2E5.net]
pcregrepならキャプチャグループを番号指定して出力可能

$ pcregrep -o1 ':\/\/(.+?)\.' input.txt

407 名前:デフォルトの名無しさん [2020/08/11(火) 15:47:36.92 ID:JW3Ec0IY.net]
>>390
いえいえ

>>389
>>391
おー、これでできました
pcregrepのやり方もありがとうございます

408 名前:デフォルトの名無しさん mailto:sage [2020/08/11(火) 20:17:56.42 ID:Uga1WByL.net]
Javaで

setMethod();
getMethod();
setBake();

みたいなgetter,setterは検出したくなく、

Methoda();
Methodb();
bake();

みたいなset, getで始まっていない()付きの文字列を含む
行を正規表現一行で検出するするのはどうしたらいいのですか?

409 名前:デフォルトの名無しさん mailto:sage [2020/08/11(火) 21:07:16.11 ID:xo6O5h7F.net]
^(?=.*?\b(?!set|get)[A-Za-z]++\(\);).*

410 名前:
^(?=.*\b(?!set|get)[A-Za-z]+\(\);).*
[]
[ここ壊れてます]



411 名前:デフォルトの名無しさん mailto:sage [2020/08/11(火) 21:55:37.51 ID:Uga1WByL.net]
申し訳ありません。

Methoda() {
Methodb(){
c = z.Methoda().Methodb(a,b)

みたいな行は検索の対象にいれたいのですが
よろしくお願いします。

412 名前:デフォルトの名無しさん mailto:sage [2020/08/11(火) 22:14:19.40 ID:giB5l2E5.net]
もうちょい目的と仕様をはっきりさせたほうがいいんじゃない?

get/setではじまってない()付きの文字列を含む行なら問題ないけど
get/setではじまってないメソッド定義やメソッド呼び出しをもれなく抽出したいということなら
正規表現だときつい気がする

後者ならコードをパースして使ってるメソッド一覧を出力するようなツールを探したほうがいいかも

413 名前:デフォルトの名無しさん mailto:sage [2020/08/11(火) 22:27:44 ID:xo6O5h7F.net]
^(?=.*?\b(?!set|get)[A-Za-z]++\(\)).*

414 名前:デフォルトの名無しさん mailto:sage [2020/08/11(火) 22:36:31 ID:P147PBTZ.net]
(?<=(?:\n|^|\.))(?<!set|get)[a-zA-Z]+\(

415 名前:デフォルトの名無しさん mailto:sage [2020/08/11(火) 22:52:10.25 ID:Uga1WByL.net]
引数が無い and setter, getterではないメソッドを含んでいる行です
ひょっとして正規表現内では表現できないかもしれません。
文脈自由レベルでしょうか?

416 名前:デフォルトの名無しさん [2020/09/20(日) 19:06:52.11 ID:shjW7F5c.net]
5chのスレタイはこん感じで入っている

<a href="1599110613/l50">1: ぶっちゃけ始めるのにいい言語て何 part3 (78)</a>
<a href="1545032904/l50">2: 文字コード総合スレ Part12 (95)</a>
<a href="1598112455/l50">3: Rust part9 (198)</a>
<a href="1598336253/l50">4: 小6におすすめな言語 (32)</a>
<a href="1594528940/l50">5: C++相談室 part152 (404)</a>
<a href="1596690797/l50">6: Xamarin Part7 (97)</a>
<a href="1598527450/l50">7: くだすれPython(超初心者用) その50【まず1嫁】 (423)</a>

ここからたとえば「言語」とついたスレタイだけ抽出するのは無理だった

<a href="1599110613/l50">1: ぶっちゃけ始めるのにいい言語て何 part3 (78)</a>
<a href="1598336253/l50">4: 小6におすすめな言語 (32)</a>

417 名前:デフォルトの名無しさん mailto:sage [2020/09/20(日) 20:06:08.38 ID:XyOg3AIQ.net]
>>399
いやもう
\b(?!set|get)\w+\(\)
でいいんでしょ

418 名前:デフォルトの名無しさん mailto:sage [2020/09/20(日) 23:02:18.72 ID:ylbIOeZ5.net]
JavaScript では、これで複数行マッチ(g)できた
/<a[^>]+>.*言語.*<\/a>/g

<a で始まって、> 以外の文字が、1文字以上続いて、>
言語の前後に、.*
<\/a> で終わる

他には、Ruby でスクレイピングすれば?

419 名前:デフォルトの名無しさん mailto:sage [2020/09/21(月) 00:25:21.75 ID:18fwmJUF.net]
>>402
おかしいな、それでうまくいかなかったのに

と思ったら入ってくるHTMLソースに改行がないようだ
</a>のあとに改行入れるとうまくいくように見えるけど、HTMLソースがおかしくなる

正規表現以前の問題だったわ

420 名前:デフォルトの名無しさん mailto:sage [2020/09/21(月) 02:04:42.18 ID:h9hvsVjr9]
ダイドーグループ、「副業・副業受け入れ制度」を導入
https://ascii.jp/elem/000/004/027/4027451/
コロナで「需要が高まった副業スキル・講座」10選。ただ話を聞くだけでもOK
https://news.yahoo.co.jp/articles/72ef07c7ac7877e73101f6362163f4985bd35572
副業ニーズが急速に上昇、副業を認める企業に対して高い好感度。課題は「情報の提供方法」
https://webtan.impress.co.jp/n/2020/09/08/37385
老舗の製薬会社が頼った、月10万円で雇える“オンライン副業人材”
https://news.yahoo.co.jp/articles/2e55924436055059522c95976fa271cbb6766b21
ジョブ型への移行、オフィス半減 富士通・平松常務に聞く「真のDX企業へと脱皮する要点」




421 名前:條C上、社内副業を解禁 ITとの協業など企画・立案
https://www.nikkei.com/article/DGXMZO63623910Z00C20A9EE9000/
ジョブ型、在宅、単身赴任解消、副業受け入れ……経営判断の舞台裏
https://business.nikkei.com/atcl/NBD/19/special/00592/
年商5000万円のYouTuber・イケダハヤトさんに聞く!
YouTuberを副業にしたいと考える人に伝えたい「世界を楽しむ」心構え
https://ddnavi.com/interview/673913/a/
スポーツ界とビジネス界のマッチング 副業・兼業人材のスキルを生かす
https://project.nikkeibp.co.jp/mirakoto/atcl/sports/h_vol16/
フリーランス向け報酬即日払いサービス『先払い』 受付開始から12ヶ月で申込件数2,500件突破
https://prtimes.jp/main/html/rd/p/000000040.000047439.html
[]
[ここ壊れてます]

422 名前:400 mailto:sage [2020/09/21(月) 02:18:58.27 ID:+seX53Ud.net]
別に抜き出すだけなら、
一旦、</a> の後ろに、改行を追加してから、正規表現を使えば?

それか、HTML をコピーしてから、やるとか

423 名前:デフォルトの名無しさん mailto:sage [2020/09/21(月) 04:00:13.04 ID:fovUI165.net]
"/(<a(?>[^>]+)>(?>[^<]*?言語[^<]*)<\/a>)(?:<a(?![^<]*言語)(?>[^<]+)<\/a>)*/$1/g"

424 名前:デフォルトの名無しさん mailto:sage [2020/09/21(月) 04:10:48.96 ID:fovUI165.net]
"/<a(?![^<]*言語)(?>[^<]+)<\/a>//g"

425 名前:400 mailto:sage [2020/09/21(月) 05:27:30.09 ID:+seX53Ud.net]
Ruby, Nokogiri で、スクレイピングしたら、

require 'open-uri'
require 'nokogiri'

# プログラム技術@スレッド一覧
url = "https://mevius.5ch.net/tech/subback.html"

doc = Nokogiri::HTML( open( url ) )

# 「言語」という単語が含まれる、タイトルを表示する
ary = doc.css( "#trad > a" ).map { |elem| elem.content }
.select { |title| title.include? "言語" }

puts ary

出力
6: 次世代言語21 Go Nim Rust Swift Kotlin TypeScript (330)
10: 日本語プログラミング言語『なでしこ』スレ6.1c2ch.net (108)

以下略

426 名前:デフォルトの名無しさん [2020/09/21(月) 15:36:21.19 ID:K0hBqhJG.net]
冗談抜きでそんな無駄な努力するよりxpathとかそっち系おすすめするぞ

427 名前:デフォルトの名無しさん mailto:sage [2020/09/21(月) 16:25:39.02 ID:+MA8+KhA.net]
単純なスクレイピングはcurl+pupが楽

$ curl -s https://mevius.5ch.net/tech/subback.html | pup '#trad > a' text{} | grep 言語 | head -5

428 名前:400 mailto:sage [2020/09/21(月) 22:36:13.18 ID:+seX53Ud.net]
>>408
のopen-uri を、下のように、外部コマンドのcurl にも出来るけど、
普通は、わざわざ外部コマンドを呼ばない

url = "http〜"
doc = Nokogiri::HTML( open( url ) )

html = `curl http〜`
doc = Nokogiri::HTML( html )

429 名前:デフォルトの名無しさん mailto:sage [2020/09/22(火) 15:43:36.39 ID:fUgbeHE5.net]
●Regular Expressionの使用環境
サクラエディタ
●検索か置換か?
置換
●説明
httpを含まない行の/を年に置き換えたい
●対象データ
https://5ch.net/
2020/9
●希望する結果
https://5ch.net/
2020年9

430 名前:デフォルトの名無しさん mailto:sage [2020/09/22(火) 16:23:41.31 ID:hefdb5Yb.net]
こんなもんでもよろしいでしょうか。
あんまりうまくないと思いますが。
よろしくお願いいたします。

置換前
^(?!http)([0-9]{4})(/)

置換後
$1年



431 名前:デフォルトの名無しさん mailto:sage [2020/09/22(火) 16:33:21.65 ID:fUgbeHE5.net]
>>413
ありがとうございます。うまくいきました。

432 名前:デフォルトの名無しさん mailto:sage [2020/09/23(水) 20:03:55.75 ID:itvZvUM6.net]
>>406
>>407
なんかすげえな

>>405,408-411
いろいろやり方あるんだね、サンクス

433 名前:デフォルトの名無しさん mailto:sage [2020/09/25(金) 14:10:58.84 ID:3NF+8528.net]
●Regular Expressionの使用環境
Linux
awkとか、sed。
目的が置換なので、コマンドはなんでも構いません。

●検索か置換か?
置換

●説明
= 任意の文字列 :
を置き換えたい
※前後に半角スペースあり。

●対象データ
hogeghoe = type: furagura
mogemoge = syntax: mojamoja

●希望する結果
hogeghoe type: furagura
mogemoge syntax: mojamoja
※スペースで置き換えた例


よろしくお願いいたします。

434 名前:デフォルトの名無しさん mailto:sage [2020/09/25(金) 14:14:55.55 ID:3NF+8528.net]
>>416
取り消します。精査する前に書き込んでおり
間違いがございました。すいません。



●Regular Expressionの使用環境
Linux
awkとか、sed。
目的が置換なので、コマンドはなんでも構いません。

●検索か置換か?
置換

●説明
= 任意の文字列 :
を置き換えたい
※前後に半角スペースあり。

●対象データ
hogeghoe = type: fuga:fuga
mogemoge = syntax: moja:moja
※置換目的のコロンの後ろにさらにコロンがある場合があります。
 =から「次の最初のコロン」までが置換対象です。

●希望する結果
hogeghoe fuga:fuga
mogemoge moja:moja
※スペースで置き換えた例

よろしくお願いいたします。

435 名前:デフォルトの名無しさん mailto:sage [2020/09/25(金) 14:24:47.87 ID:q10QaMUD.net]
>>417
sed 's/ =[^:]*://g'

436 名前:デフォルトの名無しさん mailto:sage [2020/09/25(金) 16:57:28.24 ID:3NF+8528.net]
>>418
ありがとうございます。理解を超えた書き方なので
そのまま利用いたします・・・

437 名前:デフォルトの名無しさん mailto:sage [2020/09/25(金) 21:14:34.14 ID:9rvIESf7.net]
>>419
そんなに難解ではないぞ
: でない文字が0個以上続いて
その後に一文字だけ : があるパターンを
すべてスペースに書き換えるというだけの意味

438 名前:デフォルトの名無しさん mailto:sage [2020/09/25(金) 22:49:57.38 ID:rXEBHfdh.net]
●使用環境:RegEx Lab(iOSアプリ,ICU Regex)
●検索か置換か?:検索
●説明:時間毎の内容を取り出したいです。自分でも考えてみたのですが、(?m)(?<=\d{1,2}:\d{2}\r)([\s\S]*?)\r ではAt〜Mediaまで取得できませんでした。
補足として、各内容の前後には必ず時間と空白行が挿入されています。ただし、テキストにも空白行が挿入されている場合があります。ちなみに日付毎にファイルが分かれているため、対象データ最上部の日付が途中に挿入されることはありません。

●対象データ

25 September 2020
=================

8:05
テキスト1

10:44
テキスト2
At: スポット名: 位置情報・座標
Tags: タグ1, タグ2
Media: 123abcdefg.jpg
Media: hijklmn456.png

●希望する結果
○マッチ1
テキスト1

○マッチ2
テキスト2
At: スポット名: 位置情報・座標
Tags: タグ1, タグ2
Media: 123abcdefg.jpg
Media: hijklmn456.png

439 名前:デフォルトの名無しさん [2020/09/26(土) 02:18:28.42 ID:Xs9MiFl7.net]
とりあえず鬼雲なら
\d\d?:\d\d\n(([^\n]+\n)+)
で\1なり$1なりで取り出せるけど

どー使うのかしらねーけど改行に続く時刻消せばいいんじゃねw

440 名前:デフォルトの名無しさん mailto:sage [2020/09/26(土) 07:24:38.50 ID:QW/S7GaB.net]
\d\d?:\d\d\n\K((.(?!^\d\d?:\d\d))+\n)+
マッチに時間の直前の空行まで含めるのか?含まないのか?
テキスト終端(例だとテキスト1\n 456.png\n)の改行文字を含めるのか?含まないのか?
マッチがどこまでなのか曖昧
2段階になるけど一旦時刻をテキスト中に現れない文字に置換すれば簡単に出来る
^\d\d?:\d\d → ★
[^★]+
時刻の直前の空行を含まないのなら
\n\d\d?:\d\d → ★
テキスト終端の改行を(ry
\n\n\d\d?:\d\d → ★



441 名前:デフォルトの名無しさん mailto:sage [2020/09/26(土) 19:21:20.61 ID:aEJhlUXF.net]
>>422
>>423
ありがとうございます!
試してみたところ、Meryでは問題なく動作しているようでしたがRegEx Labでは動作しませんでした…

> 時間の直前の空行
>テキスト終端(例だとテキスト1\n 456.png\n)の改行文字
どちらも含めずに取得したいです。

442 名前:デフォルトの名無しさん [2020/09/26(土) 19:40:36.95 ID:5brst4gY.net]
(?m)(?<=^\d{1,2}:\d{2}(?:\r\n|(?<!\r)\n|\r(?!\n)))^[\s\S]*?(?=(?:\r\n|(?<!\r)\n|\r(?!\n))+\d{1,2}:\d{2}(?:\r\n|(?<!\r)\n|\r(?!\n))|(?:\r\n|(?<!\r)\n|\r(?!\n))*\z)

443 名前:デフォルトの名無しさん mailto:sage [2020/09/26(土) 20:25:49.24 ID:W0BkzYxL.net]
こういう長い正規表現てやっぱ遅くなったりするの?

444 名前:デフォルトの名無しさん [2020/09/26(土) 20:47:28.01 ID:5brst4gY.net]
これでよかったっぽい
(?m)(?<=^\d{1,2}:\d{2}(?:\r?\n|\r))^[\s\S]*?(?=(?:\r?\n|\r)+\d{1,2}:\d{2}(?:\r?\n|\r)|(?:\r?\n|\r)*\z)

445 名前:デフォルトの名無しさん [2020/09/26(土) 20:48:16.86 ID:5brst4gY.net]


446 名前:>>426
どうだろうね、基本的な構造は>>421と同じだけど
データの改行コードがどうなっているのか謎だったのでとりあえず全種類対応しようと欲張ったらこんなことに

\n に置き換えるとこう
(?m)(?<=^\d{1,2}:\d{2}\n)^[\s\S]*?(?=\n+\d{1,2}:\d{2}\n|\n*\z)
[]
[ここ壊れてます]

447 名前:デフォルトの名無しさん mailto:sage [2020/09/26(土) 20:52:05.12 ID:yw3DqGjj.net]
長い短いではなく、試行回数が多い記述(行ったり戻ったり何度もやり直すもの)が遅い
そういうのは逆に記述を詳しくしたりして長くするほうが速い

448 名前:デフォルトの名無しさん mailto:sage [2020/09/26(土) 21:02:00.75 ID:aEJhlUXF.net]
>>427
問題なく動作しました、ありがとうございます!
本当に助かりました!

449 名前:デフォルトの名無しさん mailto:sage [2020/09/26(土) 21:08:10.61 ID:GBugeZhr.net]
>>419
正規表現のデフォルトは、貪欲・greedy・最長一致だから、
非貪欲・reluctant・最短一致にしたい場合に使う。? と同じ

[^x]*、x以外の文字を、0個以上
[^x]+、x以外の文字を、1個以上

Ruby では、

src = "12x34x56"

p src[ /.*x/ ] #=> 12x34x

p src[ /.*?x/ ] #=> 12x
p src[ /[^x]*x/ ] #=> 12x

450 名前:デフォルトの名無しさん mailto:sage [2020/09/26(土) 21:51:29.79 ID:awo63W4n.net]
>>429
行ったり戻ったりはないんじゃない?



451 名前:デフォルトの名無しさん mailto:sage [2020/09/26(土) 22:57:54.77 ID:U+G6yEte.net]
>>432
バックトラックの事でしょ
https://qiita.com/mochizukikotaro/items/d36e61e56220da5f95d1

452 名前:デフォルトの名無しさん [2020/09/27(日) 04:53:12.79 ID:ICi3HfJX.net]
\d{1,2}なら\d\d?
\d{2}なら\d\d
の方が短く済むから2桁以下なら無駄

453 名前:デフォルトの名無しさん mailto:sage [2020/09/27(日) 05:56:53.69 ID:nMBRMM6J.net]
それは見易さと短さのどちらを優先するかによる
短いだけが正義では無い
2つ程度で見易いもクソも…と思うかも知れないが慣れない者にとっては数字の方が見易いらしい
俺は断然\d\d?派だが

でもこれは(?:\r?\n|\r)→(?:\r\n?|\n)
同じ意味だが
\r
\r\n
 \n
をどう表すか?ってことだから後者のように前方を固定した方が分かり易いと思う
RtoLが関係してたりするのだろうか?

454 名前:デフォルトの名無しさん mailto:sage [2020/09/27(日) 06:00:47.57 ID:Y+KxHJb0.net]
今どき\rだけとか見ないし\r?\nで良くね? 駄目?

455 名前:デフォルトの名無しさん mailto:sage [2020/09/27(日) 20:03:40.48 ID:+P5c8fwT.net]
●Regular Expressionの使用環境

c# .net Framework 4.8

●検索か置換か?
検索

●説明
「,」区切りの2桁の文字列を全て取得したい(Split関数でなく)。


●対象データ
04,05,28

●希望する結果
04
05
28

●補足
現在使っている正規表現は右です (\d{2})(?:,(\d{2}))*
これを使うと、対象となる2桁の数字のうち、最初と最後のものしか取得できません
対象データが4個以上でも同様です

456 名前:411 mailto:sage [2020/09/27(日) 20:26:03.04 ID:qo22866j.net]
以前 >>412 で質問し解答を頂いた者です。
内容は同じなんですが、この置換を他のパターンでも応用したく再度質問致します。

●Regular Expressionの使用環境
サクラエディタ

●検索か置換か?
置換

●説明
◆を含まない行の▲を■に置き換えたい
◆▲■は任意の文字列で、文字数も決まっていません。

●対象データ
Sst68▲h4◆
DRkPP2▲V
NN▲◆9K12XV▲
G▲RL88▲A7

●希望する結果
Sst68▲h4◆
DRkPP2■V
NN▲◆9K12XV▲
G■RL88■A7

どうぞよろしくお願いいたします。

457 名前:デフォルトの名無しさん mailto:sage [2020/09/27(日) 21:00:31.89 ID:7/tRzxCb.net]
>>433
極端な例だろうけど4倍も差が出るのか

458 名前:デフォルトの名無しさん mailto:sage [2020/09/27(日) 21:15:26.41 ID:5NvF/cEJ.net]
>>437
(¥d{2}),?

459 名前:デフォルトの名無しさん mailto:sage [2020/09/27(日) 22:52:42.77 ID:+P5c8fwT.net]
>>

460 名前:440
返信ありがと
だけど上手く取得できないです
対象データが 04,05,28 のときにマッチしたグループを全部出力すると
04,
04
となります
[]
[ここ壊れてます]



461 名前:デフォルトの名無しさん mailto:sage [2020/09/27(日) 23:09:03.39 ID:5NvF/cEJ.net]
>>441
MatchじゃなくてMatches使ってね
よく考えたら単に¥d{2}でもよくない?

462 名前:デフォルトの名無しさん mailto:sage [2020/09/27(日) 23:09:42.50 ID:PP0FbEmI.net]
>>439
ちっとも極端じゃないよ
対象テキストが長くて酷いと数sと数msとか何千倍、何万倍も差がつく
もっと極端なことにもなって、だんまり(終わらない)状態になることもある

463 名前:デフォルトの名無しさん mailto:sage [2020/09/27(日) 23:11:27.15 ID:PP0FbEmI.net]
あ、そのリンク先の表現でのことじゃなく一般的な話としてのことなので、念のため

464 名前:デフォルトの名無しさん mailto:sage [2020/09/27(日) 23:23:38.28 ID:+P5c8fwT.net]
>>442
おかげさまで出来ました。ありがとうございます

465 名前:デフォルトの名無しさん mailto:sage [2020/09/28(月) 00:15:40.71 ID:KUcib4mR.net]
数年前に某技術系Q&Aサイト全体が30分以上応答不能になったことがあったけど、アレもbacktrack絡みの正規表現処理(に高負荷をもたらす投稿)がトリガーだったはず

466 名前:デフォルトの名無しさん mailto:sage [2020/09/28(月) 00:39:03.54 ID:HqyKtYng.net]
Jane系のNGEx,ReplaceStr.txtの正規表現で酷いものが投稿されることがある
よく吟味しないと
対象スレ(ちょっと長いスレとか)によってはだんまりとか発生する

467 名前:デフォルトの名無しさん mailto:sage [2020/09/28(月) 05:18:56.57 ID:QIpyCS2B.net]
>>438
一旦、grep で、◆ を含まない行だけを抽出してから、処理すれば?

grep -v "◆" ファイル名

468 名前:デフォルトの名無しさん mailto:sage [2020/09/28(月) 05:43:11.14 ID:9VrOlQkL.net]
バックトラックは対象が簡単に一致するものしか無いのであればそれほど気を使わなくても良いが
一致しないものがある場合 一致しない に至るまでに全パターンを試すから
その挙動を必要最小限に抑えたものとそうでないものとでの試行数は桁違い
対象が長くなれば数倍どころでは済まない
大抵の場合、人が確認する際のロジックを再現するのが1番効率が良い

NGEx.txtを晒すスレ7
jane2ch.net/test/read.cgi/community/1497272912/340
(<br>.*){20}             49194006ms  激重
^(.*?<br>){20}            *1570733ms
^(?:(?:(?!<br>).)*<br>){20}     ****2202ms  軽い
^(?>.*?<br>){20}           ****1784ms  もっと軽い

469 名前:435 mailto:sage [2020/09/28(月) 15:22:21.72 ID:R3xf3P8N.net]
>>448
単なるテキストならいいのですが、用途としては
リネーマーソフトReNamerやAdvanced Renamerなどで
バッチ処理にも使いたいので。

470 名前:デフォルトの名無しさん mailto:sage [2020/09/28(月) 18:16:12.67 ID:RQEq0dPl.net]
>>438
(?:^(?!.*◆)|\G(?!\A))(.*?)▲ → $1■



471 名前:デフォルトの名無しさん mailto:sage [2020/09/28(月) 18:54:06.13 ID:R3xf3P8N.net]
>>451
出来ました!素晴らしいです!マジ感謝です!ありがとうございました。

472 名前:デフォルトの名無しさん mailto:sage [2020/10/21(水) 20:12:01.53 ID:nvjx5i9I.net]
一文字だけで改行するのを
NGにするには
どうしたらいい?

473 名前:デフォルトの名無しさん mailto:sage [2020/10/21(水) 20:18:35.54 ID:+qN3TxkM.net]
>>453
テンプレを読んで出直しましょう

474 名前:デフォルトの名無しさん mailto:sage [2020/11/06(金) 11:29:16.13 ID:xeNq05z2.net]
oniguruma6.9.6 Windows10のVS2019で64bit版だとtestc.exeが無言で終了する、32bitだと正常。
Winodws7でVS2015U3だと64bitでも32bitでも正常に動作する。

これ、以前からWindows64bitが鬼門だなあ

475 名前:デフォルトの名無しさん mailto:sage [2020/11/10(火) 19:15:09.53 ID:aUuUQimA.net]
●PowerShell

●置換

●テキストファイル内の「WrtCookie=」で始まる行の値を「WrtCookie=」に置換する

●「WrtCookie=」で始まる行

現在のコマンド

$input = '^(WrtCookie=).+$'

$replacement = '$1'

$file_contents = $(Get-Content $filepath) -replace $input, $replacement

結果

テキストファイル内の全行が出鱈目な文字列に置換されます
たとえば「$1[$1W$1I$1N$1D$1O$1W$1]$1」など

よろしくお願いします

476 名前:デフォルトの名無しさん mailto:sage [2020/11/10(火) 21:00:25.97 ID:UHXHz0W1.net]
https://www.google.co.jp/search?q=PowerShell+%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE+%E7%BD%AE%E6%8F%9B

477 名前:デフォルトの名無しさん mailto:sage [2020/11/11(水) 00:09:52.12 ID:tbqNNnPd.net]
>>457
書き込む前にたくさんググりましたが、ダメでした

478 名前: [2020/11/11(水) 01:27:50.51 ID:zRgJ3mqg.net]
>>456
変数名 input を regexp とかに変えれば上手くいくはず

input は「自動変数」として設定済
https://docs.microsoft.com/powershell/module/microsoft.powershell.core/about/about_automatic_variables

479 名前:デフォルトの名無しさん mailto:sage [2020/11/11(水) 02:35:05.41 ID:wa6LgG/F.net]
>>456
俺のところじゃ、そのままでも正常だけどなあ(win7だからか? PS ver.5.1)
その3行だけじゃあ表示も出力もされないので
$file_contents
を最後に追加した
その入力ってJane系のiniファイル(SJIS)だよね?
ファイルに出力もして確認してみた
(デフォではUnicode16になっちゃうのでout-fileでencoding指定)

480 名前:デフォルトの名無しさん mailto:sage [2020/11/11(水) 05:21:46.13 ID:yU9bVv8n.net]
Windows 10、PSVersion 5.1 では、

input という名前が、ダメ!



481 名前:デフォルトの名無しさん mailto:sage [2020/11/11(水) 19:56:31.19 ID:tbqNNnPd.net]
>>459-461
おっしゃる通りに変数inputの名前を別の変数名にしたら出来ました
inputは予約語みたいなものだったのね
ありがとう

482 名前:デフォルトの名無しさん mailto:sage [2020/11/11(水) 22:49:04.53 ID:yU9bVv8n.net]
VSCode を使っていれば、白色になる・注意されるから、おかしいとすぐに分かる

まあ、echo などのエイリアスも、白くなるけど

483 名前:デフォルトの名無しさん [2020/12/12(土) 00:58:58.79 ID:c3naq2mv.net]
質問
abc

a,b,c
に一発で変換する正規表現を教えてください!

484 名前:デフォルトの名無しさん mailto:sage [2020/12/12(土) 07:54:00.68 ID:hjoAkuIf.net]
(?!^|$) → ,

485 名前:デフォルトの名無しさん mailto:sage [2020/12/12(土) 09:13:39.74 ID:weC8GZqi.net]
461じゃないけど、知らなかった。

 行頭じゃない&行末じゃない

だけ言えば字間全てに入れてくれるんだ。

486 名前:デフォルトの名無しさん mailto:sage [2020/12/12(土) 09:45:07.71 ID:DbQnMcwq.net]
s//,/g
だと、,a,b,c,になる

487 名前:デフォルトの名無しさん [2020/12/12(土) 10:10:46.24 ID:c3naq2mv.net]
>>465
ありがとうございます!

488 名前:デフォルトの名無しさん mailto:sage [2020/12/15(火) 08:04:57.95 ID:RAwP5vtJ.net]
●Regular Expressionの使用環境
Perl5
●検索か置換か?
検索
●説明
文字列中のX,YY,ZZZのどれかが最初にあるまでのX,YY,ZZZを含む抽出
●対象データ
ABXCDXEFYYGH
ABYCZZZDXEFYYGH
ABCDXXGHZZ
●希望する結果
ABX
ABYCZZZ
ABCDX

お願いします

489 名前:デフォルトの名無しさん mailto:sage [2020/12/15(火) 08:15:41.96 ID:M4wr588R.net]
>>469
($out) = ($in =~ /(.*?(?:X|YY|ZZZ))/)

490 名前:デフォルトの名無しさん mailto:sage [2020/12/15(火) 08:17:29.03 ID:cXhQAKUm.net]
>>469
試してないけど、
\A.*?(X|YY|ZZZ)(?=(X|YY|ZZZ))



491 名前:デフォルトの名無しさん mailto:sage [2020/12/15(火) 08:49:36.46 ID:RAwP5vtJ.net]
>>470-471
ありがとうございます。
最初のでできました。

492 名前:デフォルトの名無しさん mailto:sage [2020/12/19(土) 09:53:24.06 ID:YTpQ8Jg0.net]
ublacklistでPinter

493 名前:estをブロックする正規表現教えて下さい []
[ここ壊れてます]

494 名前:デフォルトの名無しさん [2021/01/11(月) 15:03:41.29 ID:A5mldiyH.net]
行末以外の改行を任意の一文字(今回はアットマーク)に置換したいのですが可能でしょうか?
改行コードは、crもlfもcrlfも混じってるものとしてお願いしたいです。

495 名前:デフォルトの名無しさん [2021/01/11(月) 15:10:21.63 ID:WVZOdukT.net]
>>474
行末の改行と行末でない改行を区別する方法がわからぬ
CSVみたいな感じ?

496 名前:デフォルトの名無しさん [2021/01/11(月) 15:31:25.19 ID:zqhSwaSS.net]
初学者なのでうまく伝わるか心配ですが、 固定長で末尾に改行が入っているレコードファイルを扱っています
その中で、末尾だけでなくレコード中にも改行コードが含まれるようなデータがあり、それを置換したいといった具合です。

UNIX上での話なので、Perlやsedで置換できればと思います。
よろしくお願いいたします。

497 名前:デフォルトの名無しさん mailto:sage [2021/01/11(月) 15:41:19.51 ID:8i1ZTkbL.net]
sedはデフォルト行ベースなので改行コードを全部置換すればいい

498 名前:デフォルトの名無しさん mailto:sage [2021/01/11(月) 15:43:13.55 ID:92N2rfT4.net]
/[\r\n]++(?!$)/@/g
こんな感じじゃね?分からんけど

499 名前:デフォルトの名無しさん mailto:sage [2021/01/11(月) 16:15:14.39 ID:rLqIFFRR.net]
s/\r?\n/@/gm;

どうよ?

500 名前:デフォルトの名無しさん mailto:sage [2021/01/11(月) 16:20:44.13 ID:A2M5zvGV.net]
固定長ごとに出てくる改行以外の改行ってことじゃね
改行含めて80文字固定長なら80文字目や160文字目以外の37文字目や53文字目に出てくる改行



501 名前:デフォルトの名無しさん mailto:sage [2021/01/11(月) 17:26:33.52 ID:8i1ZTkbL.net]
あーすまんそういうことか
それだと固定長単位に読み取って置換と出力のループかな

while read -N10 line || [ "$line" ]; do
echo "$line" | tr -d '¥r¥n'
echo
done < input.txt

502 名前:デフォルトの名無しさん [2021/01/11(月) 17:59:11.32 ID:Op1S7Ai1.net]
やりたいことは、 >>480 さんの仰る通りです。
少ない情報の中、皆さん色々とありがとうございます。

明日以降試してみます、本当にありがとうございます。

503 名前:デフォルトの名無しさん mailto:sage [2021/01/11(月) 18:31:58.04 ID:RwOnRvzI.net]
改行コードは、cr・lf・crlf の3種類あるのか?

固定長の末尾の改行の後には、何が入っている?
ヌル文字か?

例えば、100バイトの固定長で、内容が80バイトなら、
残りの20バイトには、何が入っている?

それとも、内容の80バイトの部分だけが、渡ってくるのか?

504 名前:デフォルトの名無しさん mailto:sage [2021/01/11(月) 18:43:53.19 ID:5PaUweSP.net]
CR なんとかReturn
LF LineFeed
CRLF なんとかReturnLineFeed

505 名前:デフォルトの名無しさん mailto:sage [2021/01/11(月) 20:39:57.39 ID:F0XanEVZ.net]
echo -en "abcde
a\ncde
a\rcde
a\r\nde
abcdef
a\ncdef
a\nc" |
sed -re ':b;y/\r\n/@@/;/.{5}/!{N;bb};'

506 名前:デフォルトの名無しさん mailto:sage [2021/01/11(月) 21:38:18.11 ID:6WXFekQD.net]
>>474
CRLFは@2個に置換でいいんだよね?
CRLFを@1個に置換したら固定長ファイルとして
ファイル構造がおかしくなるわけだし

507 名前:デフォルトの名無しさん [2021/01/12(火) 17:48:10.93 ID:fqpU06Zc.net]
>>484 carriage

508 名前:デフォルトの名無しさん mailto:sage [2021/01/14(木) 20:15:05.94 ID:uu7IOQ/X.net]
>>482
解決しましたか?

509 名前:デフォルトの名無しさん [2021/01/14(木) 20:19:20.00 ID:eDcISF88.net]
うざw

510 名前:デフォルトの名無しさん mailto:sage [2021/01/15(金) 04:04:23.16 ID:VxNLJyBo.net]
先日質問させていただいた471です。
色々と試した結果、
perl -pe ‘s/¥r/@/g $INFILE | perl -pe ‘s/¥n/@/g > $TMPFILE

cat $TMPFILE | perl -e ‘while(read(STDIN, $tmp , 100)){print $tmp, “¥n”}’ > $OUTFILE

と言った具合に、改行を消してから固定長に区切って再度改行付与という形でうまくいきました!

皆さんに教えてもらった方法とは少し異なりますが、ここで質問し



511 名前:なければ検索ワードすら導き出せませんでした。
皆様には感謝してもしきれません。
ありがとうございました。
[]
[ここ壊れてます]

512 名前:デフォルトの名無しさん [2021/01/26(火) 15:31:24.90 ID:7DQrPYu1x]
「フリーランススタート」の掲載案件数、累計16万件を突破
https://codezine.jp/article/detail/13393
「週3日・社員の6割以上」テレワーク、東京都が要請 ホテルをオフィス代わりに使うと、1カ月100万円補助
https://www.itmedia.co.jp/business/articles/2101/08/news119.html
札幌市のテレワーク導入支援制度 想定上回る申請600件 追加で受け付け中
https://www.hokkaido-np.co.jp/article/499531/
最大45万円を支給!ギフトモール、本社移転および従業員のリモート環境整備を徹底サポート
https://www.jiji.com/jc/article?k=000000015.000048025&g=prt
週半分以上の在宅勤務も可能!大日本印刷が人事制度刷新へ
https://newswitch.jp/p/25098
中小企業がテレワーク導入のために利用できる助成金や補助金の制度があるって知ってた?
https://dime.jp/genre/889307/
テレワーク支援が手厚い会社 vs 全部自腹会社の差がスゴすぎる
https://news.livedoor.com/article/detail/19480387/
【フリーランス・副業の実態調査】転職活動中ではない専業フリーランス、
副業ワーカーの4割以上が、副業を通して転職を検討すると回答
https://prtimes.jp/main/html/rd/p/000000076.000042378.html

513 名前:デフォルトの名無しさん mailto:sage [2021/02/02(火) 23:52:09.94 ID:LuWw9dWt.net]
[]で囲まれた単語は/\[.+\]+/gで見つかるけど
文中に複数[]で囲まれた範囲があるとうまくいかない
'['以降で一番近い']'にマッチさせたいんだがどうやるか教えて

514 名前:デフォルトの名無しさん mailto:sage [2021/02/03(水) 00:24:53.98 ID:SY/XoUH2.net]
/\[[^\]]+\]+/g

515 名前:デフォルトの名無しさん mailto:sage [2021/02/03(水) 01:04:29.59 ID:UENZ/29T.net]
>>493
ありがとう!

516 名前:デフォルトの名無しさん [2021/02/03(水) 18:02:08.71 ID:CJ1qfEuB.net]
英数字7桁[0-9a-zA-Z]の文字列から(改行を経て)先程とは異なる英数字7桁の文字列まで最短一致させる正規表現を書きたいのですがわかりません…

一つ目の7桁の英数字は変数fistに入ってます
new Reg(first +"(.*\n)*?"+ここから先がわかりません

どなたかよろしくお願いしますm(_ _)m

517 名前:デフォルトの名無しさん mailto:sage [2021/02/03(水) 18:33:27.05 ID:sadlF3mb.net]
最短一致ということは行当たりが[0-9a-zA-Z]{7}ではなく別の文字列も含んでいそうな
つまり「0123abc\ndef4567」だけではなく「あいう0123abc\ndef4567かきく」もあるとか

見本出した方がいいのではないかな

518 名前:デフォルトの名無しさん mailto:sage [2021/02/03(水) 18:41:43.46 ID:q3Uucr84.net]
とりあえずこんな感じであとは調整して
https://regex101.com/r/aLWgGd/1

519 名前:デフォルトの名無しさん mailto:sage [2021/02/03(水) 19:08:15.83 ID:CJ1qfEuB.net]
>>496
すいません、簡単にするために設定をちょっと変えさせてください。
[0-9A-Z]
大雑把で大丈夫なんですが
あいうえお01ABC23あいうえお01abc23あいうえお01abc23  ←ここの01ABC23から
あいうえお01abc23あいうえお01

520 名前:ABC23あいうえお01abc23
あいうえお01abc23あいうえお01ABC23あいうえお01abc23
あいうえお01abc23あいうえお01DEF23あいうえお01abc23  ←ここの01DEF23まで切り抜きたい
あいうえお01abc23あいうえお01ABC23あいうえお01abc23
あいうえお01abc23あいうえお01HIJ23あいうえお01abc23

first = "01ABC23" が入ってるので、正規表現の最後を01DEF23にしたいのですが
[0-9A-Z]{7}から"01ABC23"だけを除外する方法がわからず困ってます。
[]
[ここ壊れてます]



521 名前:デフォルトの名無しさん mailto:sage [2021/02/03(水) 19:12:17.69 ID:CJ1qfEuB.net]
>>498
訂正 「大文字と数字だけの7桁に設定変更させてください」って文言が抜けてました

>>497
すいません、その後の調整方法がわからないんです...

522 名前:デフォルトの名無しさん mailto:sage [2021/02/03(水) 19:16:51.84 ID:CJ1qfEuB.net]
日本語がおかしくなってました

01ABC23〜01DEF23と切り抜きたいのですが、
first = "01ABC23"と入っているので、firstという変数を使いつつ[0-9A-Z]{7}から"01ABC23"だけを除外する方法がわからず困ってます。

523 名前:デフォルトの名無しさん [2021/02/03(水) 19:28:51.74 ID:oLpXy7xv.net]
>>500
"(?!" + first + ")[0-9A-Z]{7}"

524 名前:デフォルトの名無しさん mailto:sage [2021/02/03(水) 19:41:14.94 ID:CJ1qfEuB.net]
>>501
ありがとうございますm(_ _)m
↓だと最短一致しないのですが、真ん中がおかしいのでしょうか?

let reg = new RegExp(first+"(.*\n)*?"+"(?!"+first+")[0-9A-Z]{7}");


改行を含めた最短一致は([\s\S]*?)か(.*\n)*?でできていたのですが、何故か最短にならず困ってます

525 名前:デフォルトの名無しさん mailto:sage [2021/02/03(水) 19:49:30.28 ID:CJ1qfEuB.net]
>>502
真ん中とは+で繋げた"(.*\n)*?"の部分のことです
日本語すら怪しくてすみません

526 名前:デフォルトの名無しさん mailto:sage [2021/02/03(水) 20:21:28.10 ID:CJ1qfEuB.net]
>>502
自己解決しました
スレ汚しすみませんでした
答えてくださった方々ありがとうございました

527 名前:デフォルトの名無しさん mailto:sage [2021/02/04(木) 12:49:19.54 ID:ynIf2rIG.net]
[正規表現の[表現力[は]ネストに]勝てない]
※Perlの拡張とかは除く

528 名前:デフォルトの名無しさん mailto:sage [2021/02/04(木) 15:31:37.02 ID:7s9fZWEo.net]
繰り返しの中で使う時、時間のかかる正規表現を避けたいが、結局試すのが一番
if x=="abc" と if x=~/^abc$/ の比較など(簡単すぎる例)

重要なシステム内で複雑な表現を使う場合テストも重要だが、
どうしてもおかしくなったら調べる式になってしまう

529 名前:デフォルトの名無しさん [2021/02/06(土) 14:47:08.00 ID:s4jA/y9i.net]
お願いします

●Regular Expressionの使用環境
VBScript

●検索か置換か?
置換

●説明
[hoge]をブラケットごと消したい
[[hoge]]の場合は残したい

●対象データ
abc[hoge]def
ghi[[hoge]]jkl

●希望する結果
abcdef
ghi[[hoge]]jkl
^^^^^^^

否定戻り読み否定先読みで試してみたのですが、ブラケット2回の場合にマッチせずブラケット1回の場合にのみマッチさせる方法が分かりませんでした
よろしくお願いします

530 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 15:07:35.62 ID:bKRJeVsu.net]
(?<!\[)\[hoge\](?!\])



531 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 16:56:52.18 ID:EC31O1b+.net]
>>507
VBSには否定戻り読みは無いので、工夫するしかない
すぐには思いつかないけどもっといい方法もあるかもしれないのでググってみては?
愚直には、一つの方法として以下の場合に分ける
1) [hoge]で始まる場合
2) 文字列があって [ 以外で終わって [hoge] がある場合
3) 文字列があって [ で終わってる場合、[hoge] があって ] が続かないこと

pattern : "^(?:\[hoge]|(.*?\[)\[hoge\](?!\])|(.*?[^\[])\[hoge\])(.*)$"
replace : "$1$2$3"

abcdef → abcdef
[hoge]def → def
[[abc]]def → [[hoge]]def
abc[hoge]def → abcdef
abc[[hoge]]def → abc[[hoge]]def
abc[[hoge]def → abc[def
abc[hoge]]def → abc]def

下2つの場合が無ければもう少し簡易にできる
では[hoge]が2つ以上ある場合はどうするか?
すぐ思いつく方法としては、変換をループさせて、文字列に変化がなければ終わりとか

532 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 17:17:15.94 ID:do+3t/u8.net]
(¥[hoge¥])(?!¥])|[^¥[](¥[hoge¥])
https://regex101.com/r/xhea5T/1

533 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 17:31:09.15 ID:nqcg0owg.net]
(\[\[hoge\]\])|\[hoge\] → $1
https://regex101.com/r/xhea5T/2

534 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 17:40:46.95 ID:bKRJeVsu.net]
([^\[])\[hoge\]([^\]])
$1$2

(^|[^\[])\[hoge\]([^\]]|$)
$1$2

535 名前:デフォルトの名無しさん [2021/02/06(土) 17:4 ]
[ここ壊れてます]

536 名前:4:51.10 ID:s4jA/y9i.net mailto: >>508->>512
ありがとうございます。
やってみます。
[]
[ここ壊れてます]

537 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 18:09:33.55 ID:EC31O1b+.net]
>>511
すばらしいです
>>510,>>512
残念

538 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 18:21:12.27 ID:z9sN/DQY.net]
発想の転換だな
目鱗

539 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 18:57:27.44 ID:do+3t/u8.net]
>>511
へぇー、これは面白い

540 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 19:33:52.91 ID:nvvrKfMw.net]
>>511
これは賢い



541 名前:デフォルトの名無しさん mailto:sage [2021/02/16(火) 18:09:22.76 ID:YYQsROlp.net]
※間はタブです
●Regular Expressionの使用環境
サクラエディタ

●検索か置換か?
置き換え

●説明
(ABC|JKLHI7)を反転させたい

※(ABC|JKLHI7)→空に置き換え
ABC    DEF     123
FGH    JKL     956
GBN    MJK    HI7

↓こうなります

    DEF     123
FGH         956
GBN    MJK

(ABC|JKLHI7)を反転させて
ABC    
    JKL     
        HI7

というデータに置き換えたいです。
よろしくお願いいたします。


    

542 名前:デフォルトの名無しさん mailto:sage [2021/02/16(火) 18:10:03.36 ID:YYQsROlp.net]
>>518
説明の部分に誤りがありました。
●説明
(ABC|JKLHI7)を反転させたい

でなく
(ABC|JKL|HI7)を反転させたい

でした。

543 名前:デフォルトの名無しさん mailto:sage [2021/02/16(火) 18:30:01.16 ID:9J2HaZUU.net]
区切りは全角空白なのかい?
まあこんなのでどう?
(ABC|JKL|HI7)|[0-9A-Z]*→$1

544 名前:デフォルトの名無しさん mailto:sage [2021/02/16(火) 19:29:55.89 ID:YYQsROlp.net]
>>520
ありがとうございます。
その発想まったくありませんでした。

ほしいものカッコで包んで|要らないもので置き換え
御見それしました。

ありがとうございます。

545 名前:デフォルトの名無しさん mailto:sage [2021/02/16(火) 20:11:15.08 ID:2Q6k9WLx.net]
>>520
>>511再び
再度>>515感想

546 名前:デフォルトの名無しさん mailto:sage [2021/02/17(水) 00:48:24.95 ID:5uVmT0ro.net]
XABCXのようなものまでABCにしたいなら、末尾を+?に変えた方がいいかも

547 名前:デフォルトの名無しさん mailto:sage [2021/02/17(水) 22:00:48.93 ID:yF2gYpL6/]
「コンサル・IT業界」を俺が全解説する やりたい事ない就活生は全員集合!
https://www.youtube.com/watch?v=zJReZO1ND6c&t=2003s
努力不足でSESに転職
https://www.youtube.com/watch?v=enk3CgyuFDo
【転職】日系大手企業から外資系企業への転職は困難な道だ
https://www.youtube.com/watch?v=2HESzMFgN4M
【就活】非体育会系はどう戦うべきなのか?
https://www.youtube.com/watch?v=x6aW7E538KY
「圧倒的努力」と言いたがる奴www
https://www.youtube.com/watch?v=kI-ZkKhQLZY

548 名前:デフォルトの名無しさん mailto:sage [2021/02/18(木) 23:51:52.71 ID:sRdwF113.net]
面白いなあ
逆に正規言語じゃない言語ってどんなのか気になる

549 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 07:25:19.97 ID:1ojHRCGQ.net]
言語?

550 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 18:55:29.37 ID:Clj7wgUu.net]
文脈自由言語とか文脈依存言語とか?



551 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 20:03:11.77 ID:gWMDVcMR.net]
文脈も先読み後読みrematch駆使すれば取れそうに思うけど、本来どこまでやっていいんだっけ 理論とか分からん

552 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 20:05:33.21 ID:Wnqd+KEH.net]
正規表現で記述可能な文字列の集合を指して正規言語という

が、その意味で使われたのかは定かでない

553 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 20:15:12.89 ID:gWMDVcMR.net]
取り敢えずその言語がn要素の有限集合ならstr1|str2|...|strn で表現できるのでは
文字列の長さを制限して、有限の文字集合なら
すげーつまらないけど

554 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 20:33:20.22 ID:gWMDVcMR.net]
無作為な文字列から、特定の言語に属する部分列を検出しろ、って問題にどれだけ簡潔に答えられるかってことだよな
どう計ったものか

555 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 01:01:18.47 ID:yNkkv6Pq.net]
AIに正規表現を設計させたらどんなものになるのだろう

556 名前:デフォルトの名無しさん mailto:sage [2021/03 ]
[ここ壊れてます]

557 名前:/03(水) 06:22:13.41 ID:7UFtTk12.net mailto: ●Regular Expressionの使用環境
python 3.x

●検索か置換か?
検索

●説明
ここをアクセスの次に出てくるURL(ttp://xxxx2/)をとってきたい
pattern = re.search("▼ここをアクセス.*(http.*\n)+?",a_text,flags=re.DOTALL)
複数行検索してるが最後のURLをとってきてしまう


●対象データ

URL1です
ttp://xxxx2/



 □       【▼ここをアクセス】
ttp://xxxx2/

URL2です
ttp://xxxx3/

●希望する結果
ttp://xxxx2/
[]
[ここ壊れてます]

558 名前:デフォルトの名無しさん mailto:sage [2021/03/03(水) 06:44:56.40 ID:lklpa5qm.net]
> "▼ここをアクセス.*(http.*\n)+?"
python分からんけど
"▼ここをアクセス.*?(http.*?\n)"

559 名前:デフォルトの名無しさん mailto:sage [2021/03/03(水) 07:02:17.82 ID:h6piMY+h.net]
>>534
レスサンクスですが、最後のttp://xxxx3/を拾ってきてしまいます

560 名前:デフォルトの名無しさん mailto:sage [2021/03/03(水) 07:20:09.73 ID:h6piMY+h.net]
自己解決
"▼ここをアクセス.+?(http.+?)\n"
でいいみたい



561 名前:デフォルトの名無しさん mailto:sage [2021/03/07(日) 14:22:59.84 ID:Fo2Np7TJ.net]
正規表現ってパズルとしては面白いけど
https://oraclesqlpuzzle.ninja-web.net/regex/index.html
可読性に問題あるんじゃね?
もっとマシな別の表記方法が必要じゃないか?

562 名前:デフォルトの名無しさん mailto:sage [2021/03/07(日) 16:02:01.74 ID:UIB+9WXp.net]
自分が解らないものは悪

563 名前:デフォルトの名無しさん mailto:sage [2021/03/07(日) 16:17:46.75 ID:TNmQ0Vam.net]
理解の過程で可読性に問題があるのではと疑問を抱き、
別の表記法の必要性を考え、
そのあと別の表記を実際に考えるところまでやると、
正規表現考えたケン・トンプソンすげーなってなる

564 名前:デフォルトの名無しさん mailto:sage [2021/03/07(日) 17:26:15.98 ID:FZPehcc/.net]
>>537
> もっとマシな別の表記方法が必要じゃないか?
定期的にそう言うのが話題になるけどなかなかいい記法が無いんだよね
abc+
程度の簡単な奴と
^((?!aaa).)*((?=aaa)a((?!aaa).)*){3,5}((?!aaa).)*$
みたいなパット見よく分からん奴を1つの記法で簡単に見易くするのはなかなか難しい

565 名前:デフォルトの名無しさん mailto:sage [2021/03/07(日) 17:53:05.78 ID:AM/Ef9W/.net]
やるとしたらアスキー文字以外の文字や記号を加えてもうちょっと役割を分散させると、機能を保持しつつ見やすくはなるが、そうすると今度はラテン文字圏の人が「自分が解らないものは悪」でいかに不要かを全力で説き始めると思う。

566 名前:デフォルトの名無しさん mailto:sage [2021/03/07(日) 17:56:22.71 ID:TNmQ0Vam.net]
ASCII外の文字使うと入力コストが高くなるじゃん

567 名前:デフォルトの名無しさん mailto:sage [2021/03/07(日) 18:04:15.76 ID:4bEjyVwB.net]
?とか^とか二つの意味を持つのは何とかしてほしかったよな
まあ分かるからいいんだけど

568 名前:デフォルトの名無しさん mailto:sage [2021/03/07(日) 20:25:01.40 ID:RWgRWesX.net]
可読性を犠牲にして短く書けるのが正規表現
正規表現と同じことを可読性の高い表現で記述しようとすればなにかと長くなる
ただある一定以上複雑な正規表現は普通のプログラミング言語で書き直したほうが可読性も保守性も高い

569 名前:デフォルトの名無しさん mailto:sage [2021/03/07(日) 21:12:54.42 ID:0cOR0yWB.net]
普通のプログラミング言語で正規表現ライブラリ使ってます

570 名前:デフォルトの名無しさん mailto:sage [2021/03/07(日) 21:23:44.60 ID:FZPehcc/.net]
例えば.NETみたいに正規表現中に改行入れたりコメント書けるようにするとかして可読性を上げる試みはあるね
https://www.atmarkit.co.jp/fdotnet/dotnettips/582regexcomment/regexcomment.html



571 名前:デフォルトの名無しさん mailto:sage [2021/03/07(日) 21:31:45.50 ID:Fo2Np7TJ.net]
>>544
それしかなさそうだ

572 名前:デフォルトの名無しさん mailto:sage [2021/03/07(日) 21:36:49.39 ID:6FoXMbth.net]
>>546
改行してコメント書くのは Perl の正規表現でもできたりする

573 名前:デフォルトの名無しさん mailto:sage [2021/03/07(日) 21:55:32.23 ID:RWgRWesX.net]
>>546
その例にある(?<url>.*?)みたいな名前付きキャプチャも
可読性を上げられる数少ない

574 名前:要素だと思うけど []
[ここ壊れてます]

575 名前:デフォルトの名無しさん mailto:sage [2021/03/07(日) 22:46:53.20 ID:Fo2Np7TJ.net]
https://oraclesqlpuzzle.ninja-web.net/regex/regex-2-30.html
これは解読無理やろw 課題→正規表現を思いつくことはできるかも知れんが
正規表現→課題の解読は不可能に近い

課題:行ごとで、
文字列CABと
文字列ABCのみの行を検索する。

^((C(?=AB))|((?<=C)A(?=B))|((?<=CA)B)
|(A(?=BC))|((?<=A)B(?=C))|((?<=AB)C))*$

576 名前:デフォルトの名無しさん mailto:sage [2021/03/07(日) 23:05:17.93 ID:6FoXMbth.net]
>>550
^(?:CABC?|ABC(?:AB)?)+$

でよくない?

577 名前:デフォルトの名無しさん mailto:sage [2021/03/07(日) 23:21:37.42 ID:Fo2Np7TJ.net]
それで同じ結果になるな regex 101 でやると

578 名前:デフォルトの名無しさん mailto:sage [2021/03/07(日) 23:53:47.53 ID:4bEjyVwB.net]
正規表現には「必ず」コメントが欲しいな
できれば例も
典型例と境界例も

579 名前:デフォルトの名無しさん [2021/03/11(木) 21:40:27.72 ID:RBQB718T.net]
お願いします
●Regular Expressionの使用環境
JavaScript

●検索か置換か?
置換

●説明
数字の文字列の間の1個以上の空白や改行を カンマで置換して繋げたい

33034640, 33034640, 21703214
●対象データ
33034640 30203225

21703214

580 名前:デフォルトの名無しさん mailto:sage [2021/03/11(木) 22:14:06.84 ID:IDj18sQF.net]
>>554
¥s+をカンマで置換



581 名前:デフォルトの名無しさん mailto:sage [2021/03/11(木) 22:15:56.92 ID:IDj18sQF.net]
https://regex101.com/r/h90Hqy/1

582 名前:デフォルトの名無しさん mailto:sage [2021/03/11(木) 22:29:51.41 ID:79QhYvaG.net]
前後の数字チェック入り(区切りに\t,\fを除く)
(JavaScriptって言ってもWSH(JScript)や古いとダメ)
text.replace(/(?<=\d)[ \r\n]+(?=\d)/,", ")

583 名前:デフォルトの名無しさん mailto:sage [2021/03/11(木) 22:30:57.72 ID:79QhYvaG.net]
text.replace(/(?<=\d)[ \r\n]+(?=\d)/g,", ")

584 名前:デフォルトの名無しさん [2021/03/11(木) 23:04:03.06 ID:RBQB718T.net]
>>555
それすると文頭や文末にあるスペースにもカンマがついて変になっちゃいます。

585 名前:デフォルトの名無しさん [2021/03/11(木) 23:08:30.44 ID:RBQB718T.net]
>>558
iPadのtextwellっていうアプリでやってるんですが・・・何故か動かないです

586 名前:デフォルトの名無しさん mailto:sage [2021/03/11(木) 23:29:09.19 ID:IDj18sQF.net]
>>559
うーんなんだかなぁって感じだけど
look-behindが使えない環境ならキャプチャして上書きすればいいよ
https://regex101.com/r/ttVIeE/1

587 名前:デフォルトの名無しさん mailto:sage [2021/03/11(木) 23:33:53.05 ID:APoyxLpJ.net]
文頭,文末のスペース,改行を残す必要がないなら先にtrimしちゃえば良いのでは
str.trim().replace(/\s+/gm, ',')

588 名前:デフォルトの名無しさん [2021/03/12(金) 07:31:49.43 ID:/Ahlj9GN.net]
>>562
できました!ありがとうございました!

589 名前:デフォルトの名無しさん mailto:sage [2021/03/25(木) 01:41:37.20 ID:m6344zy8L]
SESやアウトソーシングに就職するなら飲食のほうがマシです
https://www.youtube.com/watch?v=RndtTtjji2M
【客先常駐】コロナ禍で派遣されるシゴトが減っていく
https://www.youtube.com/watch?v=8b9U36yEx3c
【就活】私が絶対行きたくない業界【転職】
https://www.youtube.com/watch?v=H2qc5qCm8-8
新卒SESで人生台無しに
https://www.youtube.com/watch?v=MC1te6k65NI
客先常駐の仕事だけは選ばないでください
https://www.youtube.com/watch?v=3ZIe7Po3OVk
【客先常駐】コロナ禍で派遣されるシゴトが減っていく
https://www.youtube.com/watch?v=8b9U36yEx3c&t=38s
【転職】IT土方を養成するプログラミングスクールからIT業界へ?【第2新卒】
https://www.youtube.com/watch?v=eRklxu5BhEs

590 名前:デフォルトの名無しさん mailto:sage [2021/03/25(木) 17:05:14.58 ID:m/0xUypz.net]
浮動小数点数の仮数部の正規表現がたとえば
https://qiita.com/hitsumabushi845/items/1b1a4921d515f662b416
を見ると
([0-9]+(\.[0-9]*)?|\.[0-9]+)
とかなり煩雑な感じなんですが、これを[0-9]+と\.?のインターリービングとして表記できればより簡潔になるはずなのに、なぜ正規表現にインターリービングがないのか、ご存知の方いらっしゃいませんか?



591 名前:デフォルトの名無しさん mailto:sage [2021/03/25(木) 18:34:43.45 ID:T+HzAix1.net]
インターリービングとは

592 名前:デフォルトの名無しさん mailto:sage [2021/03/25(木) 18:35:20.79 ID:iRaOTaqm.net]
>>565
どういう意味?
[0-9.]+
っていうことか?
12.34.56
こういうものも拾うことになるけど

593 名前:デフォルトの名無しさん mailto:sage [2021/03/25(木) 18:44:54.48 ID:ItxHMUbH.net]
正規表現でやるものなのかそれ?

594 名前:デフォルトの名無しさん mailto:sage [2021/03/25(木) 20:05:19.84 ID:DBtu6Q2L.net]
0-9が1回以上、.が1回以下現れるパターンを簡潔に書ければいいんだよね

595 名前:デフォルトの名無しさん mailto:sage [2021/03/25(木) 20:51:18.60 ID:T+HzAix1.net]
>>565
0.123とかだけでなく.123みたいな表記も含めてるから煩雑に見えるだけでしょ

596 名前:デフォルトの名無しさん mailto:sage [2021/03/25(木) 20:57:31.28 ID:+PvM3W0M.net]
例えばpythonだと、

\d

と書くと、

[0-9]

と同じ意味になるんだが、その程度の省略ができるだけでは不満?

597 名前:デフォルトの名無しさん mailto:sage [2021/03/26(金) 12:59:11.27 ID:8UZMtFlJ.net]
まず\dと[0-9]は一致しないケースがあるからダメでしょ

単なるバイトシーケンスとして扱っているときは \d == [0-9] だけど、
Unicodeの文字列として扱っているときはUnicodeのNdカテゴリに一致するかを見るので
\dが全角の「0」に一致したりする

Pythonもこういう仕様持ってた気がするけどちょっと最近触ってないから怪しい

598 名前:デフォルトの名無しさん mailto:sage [2021/03/26(金) 13:48:50.07 ID:9MjXQivW.net]
([0-9]+(\.[0-9]*)?|\.[0-9]+)

なんかほかのものもマッチする
0.
0.0.0
https://regex101.com/r/MK7ZcW/

599 名前:デフォルトの名無しさん mailto:sage [2021/03/26(金) 13:50:58.63 ID:9HpPnfto.net]
\dより\wで嵌ることが絶対多い(Unicodeの場合)

600 名前:デフォルトの名無しさん mailto:sage [2021/03/26(金) 14:50:30.80 ID:yQ1w8lx7.net]
動きそうで動かないのは、\s\Sかな
改行かなにかで引っ掛からなくて困る事がある



601 名前:デフォルトの名無しさん mailto:sage [2021/03/26(金) 19:09:23.59 ID:bWZQxU2M.net]
>>573
部分列にマッチしたんだろうな

602 名前:デフォルトの名無しさん mailto:sage [2021/03/27(土) 07:24:19.21 ID:6HYRQzqn.net]
>>573
0. にマッチするのは仕様通り
0.0.0 にマッチしてるのはグローバルフラグを付けるてるから 0.0 と .0 にマッチしてる
外せばマッチしないよ

603 名前:デフォルトの名無しさん mailto:sage [2021/03/27(土) 07:53:26.38 ID:c8B2TB9l.net]
>>577
.0にマッチするのは正しいんじゃないの?
要らないなら[0-9]+(\.[0-9]*)?で済むでしょ

604 名前:デフォルトの名無しさん mailto:sage [2021/03/27(土) 07:59:48.48 ID:HYD5C7Ts.net]
数値として正しくないものの一部にマッチするのがいやなんだろ
そりゃ前後の条件を指定してないからマッチするのは当然なんだから
(?<![0-9.])と(?![0-9.])を前後につけりゃ弾けるよ

605 名前:デフォルトの名無しさん mailto:sage [2021/03/27(土) 08:17:02.42 ID:8mKnzpia.net]
>>579
そういう話ではない
>>565のリンク先の正規表現から浮動小数点数の指数部である
末尾の([eE][+-]?[0-9]+)?を除いてるからおかしいだけ
そしてリンク先によると.123は意図的に含めてる

606 名前:デフォルトの名無しさん mailto:sage [2021/03/27(土) 09:50:47.60 ID:6HYRQzqn.net]
>>578
.0 にマッチするのは正しいよ
0.0.0 にマッチするのがおかしいって話ね

607 名前:デフォルトの名無しさん mailto:sage [2021/03/27(土) 10:05:58.69 ID:8qqpgzaM.net]
マッチしない行を正規表現で抽出したいとき、
必ず、^(?!.*残したい文字).*、この書き方になってしまいます、
必ず^(?!.*と).*で残したい文字を包むという書き方です。

ほかの書き方があれば教えてください。

例えば、以下のようなログファイルでerrだけ残したい場合は
^(?!.*err).*
と書いてerrを残します

[日付] warn メッセージ
[日付] info メッセージ
[日付] err メッセージ
[日付] info メッセージ

特段、これ以外の書き方が出来ず困ったという例も無いのですが、
ほかの表現を(あれば)知ることで、もっと知識を増やせるのではないとおもいお伺いします
よろしくお願いいたします。

608 名前:デフォルトの名無しさん mailto:sage [2021/03/27(土) 10:12:04.85 ID:3M9UQTXy.net]
>>573 のリンク先を確認したが
([0-9]+(\.[0-9]*)?|\.[0-9]+) が
0.0.0 の全体にマッチしているわけではない

609 名前:デフォルトの名無しさん mailto:sage [2021/03/27(土) 10:24:10.55 ID:HRW8qdH ]
[ここ壊れてます]

610 名前:1.net mailto: >>582
最後の.*は要らないんじゃないかな
[]
[ここ壊れてます]



611 名前:デフォルトの名無しさん mailto:sage [2021/03/27(土) 10:53:48.21 ID:cpUHfD3R.net]
>>582
>例えば、以下のようなログファイルでerrだけ残したい場合は

in-placeで置換するより、残したいものを抽出して新しいファイルを作成したほうがよくないか?
用途によっては日付とログレベルを指定してログファイルに直接クエリを投げてもいい

612 名前:デフォルトの名無しさん mailto:sage [2021/03/27(土) 12:12:53.22 ID:8qqpgzaM.net]
>>584
>>585
すいません、めっちゃ肝心なことが抜けてました。
使用している環境は主にサクラエディタです。

613 名前:デフォルトの名無しさん mailto:sage [2021/03/27(土) 12:42:16.84 ID:TmS3InK/.net]
>>582
(.*err.*)|.* → $1
https://regex101.com/r/5BF9AH/1

それか鬼雲の非包含オペレータで ^(?~err)$

614 名前:デフォルトの名無しさん mailto:sage [2021/03/27(土) 15:07:28.25 ID:cpUHfD3R.net]
>>586
余計なお世話なんだろうけどログファイルをわざわざエディタで開いて
マッチしない行を正規表現で置換して保存するのは無駄じゃないのって話

↓例えばgrepならこれでよくて指定も簡単だし自動化もしやすい
$ grep 'err' all.log > err.log

マッチしない行を正規表現を使いそうな例として
たまたま思いついただけならならいいんだけど

615 名前:デフォルトの名無しさん [2021/03/27(土) 17:09:38.08 ID:SqJSHKEy.net]
マッチしない行は-v付ければ取り出せるからな

616 名前:デフォルトの名無しさん mailto:sage [2021/03/27(土) 18:55:12.69 ID:HRW8qdH1.net]
そもそもサクラエディタにはマッチしない行を抽出する機能あるからあまり真剣に考えたことない

617 名前:デフォルトの名無しさん mailto:sage [2021/03/27(土) 22:37:04.08 ID:p2/S5VcH.net]
ログの加工をエディタでやろうとするのは筋が悪いわな

618 名前:デフォルトの名無しさん mailto:sage [2021/03/28(日) 00:36:09.11 ID:p6/Rs1VD.net]
加工というか、ログは必要な部分だけ抽出して見たいという需要はある

619 名前:デフォルトの名無しさん mailto:sage [2021/03/28(日) 01:38:45.00 ID:Ah6uwjvI.net]
たまにトラブルシューティングとかで検索する程度ならLog Parserみたいなやつでそれなりに捗るよ
検索はリニアなので量が増えると遅いけどgrepに比べれば条件指定がしやすい
https://www.microsoft.com/en-us/download/details.aspx?id=24659

速度を求めるならBigQueryとかの検索/分析系のDBに突っ込む

620 名前:デフォルトの名無しさん mailto:sage [2021/03/28(日) 19:46:40.79 ID:gm3gYlo8.net]
>>586
サクラエディタ(bregonig.dll 4.10以降)使ってるなら
>>587も書いてるけど非包含オペレーターが使えます

鬼雲およびbregonig.dllの作者さん(
@k-takata)自身がQiitaに使い方とかも載せてます
https://qiita.com/k-takata/items/4e45121081c83d3d5bfd



621 名前:デフォルトの名無しさん mailto:sage [2021/03/31(水) 03:07:25.18 ID:AtIsL56M.net]
regexエンジンって皆さんどういう基準で選んでますか?
ちょつとググるとcommon lispのcl-ppcreがダントツというベンチが出てきますが本当でしょうか?(このスレで言及が見当たらないもので…)
perl風なのがちょっと気になりますが

622 名前:デフォルトの名無しさん mailto:sage [2021/03/31(水) 03:15:02.21 ID:AtIsL56M.net]
(試せばいいんだけど、環境構築で折れました…)

623 名前:デフォルトの名無しさん mailto:sage [2021/03/31(水) 07:27:06.36 ID:XV2UTtWr.net]
特に制限なきゃ俺の採用基準は
・使おうとする言語で楽に使える奴
だな
あとダントツの基準や何を対象にするかは人によって違うから君の考えるダントツを説明しないと回答しようがないと思うぞ

624 名前:デフォルトの名無しさん mailto:sage [2021/03/31(水) 08:34:08.22 ID:U/8CErR8.net]
>>597
ベンチって書いてあるから速度でしょ

625 名前:デフォルトの名無しさん mailto:sage [2021/03/31(水) 11:28:59.80 ID:Vc5hrOQS.net]
ユースケースで速度は変わるからそれだけじゃなんとも言えないよね

NGフィルターみたいなものを高速にしたい場合に言語標準以外で考えるなら
re2かhyperscanを候補にするかな

626 名前:デフォルトの名無しさん mailto:sage [2021/03/31(水) 12:11:49.60 ID:AtIsL56M.net]
>>597-599
言葉足らずでしたごめん、線形にコードした化学式から部分構造マッチで設計に活かそうかと(古典的だけど)
chemspider.com等から100GB(100万エントリー)のテキストにまとめたが、重複や興味あるデータ以外はawk/sedでメモリに載せずに10GBまでは落とせるかも

コマンドライン引数で正規表現文字列を取り、そのままパイプで渡せる言語(cl、python等)なら速ければ何でもいいかなと
有名なperl/grepもパイプから読むけど、検索効率のためになんかキャッシュしてるようで、すぐメモリが膨らんでクラッシュする

627 名前:デフォルトの名無しさん mailto:sage [2021/03/31(水) 12:32:32.23 ID:AtIsL56M.net]
あんまり後処理できないけど、sedのg/re/pはスケーラブルみたい

g/re/commandのcommandでちょっと実験する限り、command中でmatch情報が使われてなければ保持しないのかな?
保持するmatch情報を指定出来き、match情報を得るたびに外部ファイルへ追記できる処理系が必要なのだろうか

628 名前:デフォルトの名無しさん mailto:sage [2021/03/31(水) 12:57:50.76 ID:0y1R6Bno.net]
なんとなく、パイプ避けたほうが

629 名前:デフォルトの名無しさん mailto:sage [2021/03/31(水) 13:30:47.96 ID:oCEpBqBX.net]
パイプ自体キューだからメモリ膨らむって理解してるんだけど違うのかな

630 名前:デフォルトの名無しさん mailto:sage [2021/03/31(水) 13:36:46.22 ID:jIuPTrt2.net]
>>602
メモリに載らないのはパイプ、みたいにバカの一つ覚えしてるんですけど、落とし穴あったりするんですかね?
バッファリングモードには一応気をつけてるつもりですが、詰まらないようにflushを書き加えて再コンパイルしたり
さすがにインタプリタまでは手を入れませんが…

パイプ避けるとなると、
ファイルを100くらいに細かく割り、ループ内で各ファイルを順にメモリマップ、regex掛けて(マッチ情報、ファイル名、行番号)をdbmsに格納
目ぼしいマッチ情報をクエリで拾いながら、(ファイル名、行番号)でシークしてマッチ部分に処理を適用&db書き戻し
って感じになりますかね?



631 名前:デフォルトの名無しさん mailto:sage [2021/03/31(水) 13:39:03.95 ID:jIuPTrt2.net]
>>603
プロセスの使用メモリ見ながらバッファリングは調整してますが、regex処理系のメモリ使用量がI/Oの収支と合ってないのでキャッシュだと思います

632 名前:デフォルトの名無しさん mailto:sage [2021/03/31(水) 14:03:15.96 ID:c0V7LnWa.net]
highwayとかであかんの?

633 名前:デフォルトの名無しさん mailto:sage [2021/03/31(水) 14:18:33.85 ID:AtIsL56M.net]
いや合ってるのかな…シェルの知識が乏しいので

基本はスループット最大化を目指してエンジンとパイプ前後のバッファリングモードを調整で合ってますよね?

linux/bashだと改行待ちで詰まりやすいのでstdbufが効くならそれで、効かないなら強制フラッシュ
win/pwsh6&7のパイプラインは逆にバッファリング殆ど貯めないようで、pythonだとio.Streamでかなり改善しました

>>606
詳しく!
regex highwayあたりでググってもノイズだらけです

634 名前:デフォルトの名無しさん mailto:sage [2021/03/31(水) 18:56:13.01 ID:Vc5hrOQS.net]
正規表現が向いてる用途かどうか微妙だなぁ
少ないデータ量で目的にあったライブラリを使ってみて性能の最適化はそれ次第だな
https://www.rdkit.org/docs_jp/Supplementary_Text_jp.html#jp-notes-6

データの中身と検索用途にあったデータベースに入れて
速度

635 名前:ヘ並列度を上げるほうが楽でメンテもしやすくて速度も出やすいような []
[ここ壊れてます]

636 名前:デフォルトの名無しさん mailto:sage [2021/03/31(水) 19:14:36.42 ID:AtIsL56M.net]
>>608
RDkitもちろん使ってるよー
SMILESの検索性上げたのがInChIで、その辺扱ったり、代表的な特徴量を生成するライブラリは沢山あるんだけど、もうやり尽くされた感じで
既存のデータが正規表現で扱う想定のフォーマットだから、まずは正規表現で引っ掛けて独自フォーマットに変換、という感じです

あと、勝手にオンラインから拾って来てくれたり便利なんだけど、10GB単位のリクエスト送りまくるとアク禁食らいそうだから、こっそりゴッソリ落としてきたw

PowerShellの正規表現がちゃんとコンパイルできる事や、パイプの属性が細かく指定できてかなり速い事に気付いた、灯台下暗し

ちょっとスレチぎみですまなかった
目処が付いたら効率的な正規表現とかまた相談に来ます

637 名前:デフォルトの名無しさん mailto:sage [2021/03/31(水) 23:36:10.16 ID:1Z3UgTKy.net]
正規表現を考えた人にノーベル賞を授与すべきと思うが
まだ生きているのか、何賞がいいのかなどよくわからない

638 名前:デフォルトの名無しさん mailto:sage [2021/04/01(木) 18:26:16.61 ID:+gZ88zdN.net]
>>610
>>539

639 名前:デフォルトの名無しさん mailto:sage [2021/04/01(木) 21:17:20.81 ID:B5PjUTjB.net]
ed書いてたよね?あれが最初なのか

640 名前:デフォルトの名無しさん mailto:sage [2021/04/01(木) 21:58:44.86 ID:6NDtmvbq.net]
正規表現を考えたのはケン・トンプソンではないみたいだけど



641 名前:デフォルトの名無しさん mailto:sage [2021/04/02(金) 03:22:50.55 ID:XNApZvfR.net]
Wikipedia見た限りでは、UNIXツールに導入したのはケン・トンプソンで間違いなさそう
オリジナルQED(正規表現なし)→CTSS版QED(ケン開発、正規表現導入)→Multics版QED→ed→vi→...の流れで合ってる?


#チラ裏
正規表現発展の歴史って
...→ed→(grep,sed)→awk→Perl→その他諸々
だと思ってたんだけと、カーニハン先生が去年出した(今頃気づいた)UNIX回顧録の目次見てたら、実際は
...→grep(UNIX第6版:1975)→sed,awk(UNIX第7版:1976-1979)→...
とawkがsedとほぼ同時期のリリースだったらしい事に気づいて今更びっくりしてる
AWK本の邦訳の出版が1989年だし、多分それで勘違いしてたんだな
...あれ?wikiぺ見たらsedの初登場は1973-74??じゃあ時系列自体は最初の認識であってるのかな

642 名前:デフォルトの名無しさん mailto:sage [2021/04/02(金) 11:22:21.17 ID:BO0mfYkz.net]
UNIXツールに導入したのと正規表現を考案したのとは全然別のことだよね

>>610は正規表現をUNIXツールに導入した人にノーベル賞授与すべきだと言ってるのかな?

643 名前:デフォルトの名無しさん mailto:sage [2021/04/02(金) 11:40:50.71 ID:ebi/L5xP.net]
別に正規表現である意義もそんなにないと思うし、どうでもいいのでは?

644 名前:デフォルトの名無しさん mailto:sage [2021/04/02(金) 11:42:32.54 ID:2zuzxBMS.net]
>>616
「正規表現でない」とは?

645 名前:デフォルトの名無しさん mailto:sage [2021/04/02(金) 23:12:52.23 ID:2IXJa8pf.net]
>>615
少なくとも>>610ではunixツールなんて一言も言ってないけど?
なんかデムパ受信しちゃう系の人なのかな?

646 名前:デフォルトの名無しさん mailto:sage [2021/04/02(金) 23:18:36.72 ID:nU9EtL7E.net]
論理の場で非論理的な煽り合いはやめて欲しい

647 名前:デフォルトの名無しさん mailto:sage [2021/04/03(土) 06:56:50.00 ID:mJPsJJNM.net]
論理とか言うなら>>615はなぜ
> >>610は正規表現をUNIXツールに導入した人にノーベル賞授与すべきだと言ってるのかな?
なんて言い出したのかを説明すべきだわね

648 名前:デフォルトの名無しさん mailto:sage [2021/04/03(土) 13:40:38.89 ID:v ]
[ここ壊れてます]

649 名前:SOTAguS.net mailto: 609は、『604は「実装した人に賞を」とは言ってないじゃん(あくまで考案した人に賞を)』と言ってるにすぎん []
[ここ壊れてます]

650 名前:デフォルトの名無しさん mailto:sage [2021/04/03(土) 15:45:43.43 ID:MnG7Frze.net]
言ってもないことで絡まれる604が不憫だわ
基地害に絡まれるってこういうことなだな...



651 名前:デフォルトの名無しさん mailto:sage [2021/04/03(土) 16:32:17.92 ID:cg+oQawH.net]
>>622
不憫なのは君の頭の悪さだろうな

652 名前:デフォルトの名無しさん mailto:sage [2021/04/03(土) 16:39:50.38 ID:uAN7ehAC.net]
604 「正規表現を考えた人にノーベル賞を授与すべき」
605「正規表現考えたのはケン・トンプソン」
(ケン・トンプソンはコンピュータ科学分野のノーベル賞と言われるチューリング賞を受賞済み)
607 「正規表現を考えたのはケン・トンプソンではない」
608 「Wikipedia見た限りでは、UNIXツールに導入したのはケン・トンプソンで間違い」
609 「UNIXツールに導入したのと正規表現を考案したのとは全然別」

この流れで下の文の意味が分からないなら小学校からやり直したほうがいい

「604は正規表現をUNIXツールに導入した人にノーベル賞授与すべきだと言ってるのかな?」

653 名前:デフォルトの名無しさん mailto:sage [2021/04/03(土) 17:01:43.10 ID:jUXnOQwo.net]
絡まれてるのは604ではなく609

ってとこまで読んだ

654 名前:デフォルトの名無しさん mailto:sage [2021/04/03(土) 17:17:48.40 ID:vSOTAguS.net]
正に
609が不憫だ

655 名前:デフォルトの名無しさん mailto:sage [2021/04/03(土) 17:20:20.99 ID:3054knRU.net]
>>623
もうそういうレスしか返せないなら黙ってたら?
自分も辛いだろw

656 名前:デフォルトの名無しさん mailto:sage [2021/04/03(土) 18:38:52.17 ID:nkSIG8qO.net]
>>624
>614 「Wikipedia見た限りでは、UNIXツールに導入したのはケン・トンプソンで間違い」

608 「Wikipedia見た限りでは、UNIXツールに導入したのはケン・トンプソンで間違いない」

657 名前:デフォルトの名無しさん mailto:sage [2021/04/03(土) 19:36:29.47 ID:fbz7uNem.net]
>>624
お前はごたくを言う前に>>610が言ってもないunixツールの話をなぜ>>615が言い出したのかちゃんと説明してみろよ

658 名前:デフォルトの名無しさん mailto:sage [2021/04/03(土) 20:58:53.19 ID:vSOTAguS.net]
「604は言ってないぞ」と609が指摘しただけ
その609になぜ食いつくんだよ

659 名前:デフォルトの名無しさん mailto:sage [2021/04/03(土) 21:13:29.22 ID:HBbZRCot.net]
まだ続くの?

660 名前:デフォルトの名無しさん mailto:sage [2021/04/03(土) 21:27:51.22 ID:2eiD4/1n.net]
そんなに感情的になる要素見当たらないんだけど何に反応しちゃったのか?



661 名前:デフォルトの名無しさん mailto:sage [2021/04/03(土) 22:05:45.23 ID:fbz7uNem.net]
>>630
> 「604は正規表現をUNIXツールに導入した人にノーベル賞授与すべきだと言ってるのかな?」

> 「604は言ってないぞ」と609が指摘しただけ
って解釈しろと?
そもそもunixツールとか言ってるのは>>614だけで言ってないと指摘するなら>>611-613も含めろよ

662 名前:デフォルトの名無しさん mailto:sage [2021/04/03(土) 22:13:04.80 ID:vSOTAguS.net]
えー誰でもそうとしか解釈できないだろ

663 名前:デフォルトの名無しさん mailto:sage [2021/04/03(土) 22:13:58.62 ID:vSOTAguS.net]
あまりに国語力が平均以下なんだな

664 名前:デフォルトの名無しさん mailto:sage [2021/04/03(土) 22:22:18.05 ID:vSOTAguS.net]
発言者の意図したものとか行間を読むとかできないで、その表面しか見ないのはアスペの特徴とか

665 名前:デフォルトの名無しさん mailto:sage [2021/04/03(土) 22:41:29.99 ID:AcE4W092.net]
誰でも ⇒ ID:vSOTAguS のみ
まあこの後に単発が来るのかもしれないけどw

666 名前:デフォルトの名無しさん mailto:sage [2021/04/03(土) 23:35:04.26 ID:fsqx4uGu.net]
>>632
ケントンプソンじゃないと指摘されたのがよほど悔しかったんだろ
>>614の言い訳がましい文章に悔しさがにじみ出てる

667 名前:デフォルトの名無しさん mailto:sage [2021/04/03(土) 23:40:31.67 ID:jUXnOQwo.net]
609の意図を理解できない読者がいる以上、「誰でも」という認識は誤解と思う

668 名前:デフォルトの名無しさん mailto:sage [2021/04/04(日) 02:08:54.97 ID:842owbNJ.net]
「〜だと言ってるのかな?」
これは
(実際には言ってやしないだろ?)と言う言葉が省略されてる
というか省略するのが普通で通常なら十分に読み取れるはず

669 名前:デフォルトの名無しさん mailto:sage [2021/04/04(日) 02:26:12.96 ID:+j1dsc1H.net]
もうええやん

609の文章を正しく読み取る能力の無い奴にそもそもこの板は向いてない

670 名前:デフォルトの名無しさん mailto:sage [2021/04/04(日) 02:42:10.15 ID:zADfh3JJ.net]
相手が日本語書いてるからと言って通じるとは限らない
言葉の通じないバカを言いくるめようとするからこうなる
相手に言葉が通じるか見極めるスキルと耐性・スルー力を身に着けろ



671 名前:デフォルトの名無しさん mailto:sage [2021/04/04(日) 02:44:32.45 ID:842owbNJ.net]
喧嘩するにも同程度の知能を有してないとダメってことだな

672 名前:デフォルトの名無しさん mailto:sage [2021/04/04(日) 06:18:23.10 ID:Da11t ]
[ここ壊れてます]

673 名前:GDT.net mailto: 単発わらわら湧いてて笑うわ
どっちが必死なんだかw
[]
[ここ壊れてます]

674 名前:デフォルトの名無しさん mailto:sage [2021/04/07(水) 17:35:35.06 ID:V6KO8k9b.net]
>>610 は単に偉大な先人に感謝してるだけだと思うんだが…
「正規表現を考えた人」って表現したのがまずかったのか?

675 名前:デフォルトの名無しさん mailto:sage [2021/04/07(水) 17:51:25.47 ID:tjlM1gbN.net]
もういいからやめろ

676 名前:デフォルトの名無しさん mailto:sage [2021/04/07(水) 23:04:12.41 ID:Gfnmricb.net]
>>645
ちょっとアレな人が絡んできただけw

677 名前:デフォルトの名無しさん mailto:sage [2021/04/08(木) 11:35:26.71 ID:GjjHuqzu.net]
まだおさまらないてどんだけ悔しかったんだよww

678 名前:デフォルトの名無しさん mailto:sage [2021/04/08(木) 11:39:17.18 ID:ADplJe5S.net]
バカが身の程しらずにもこのスレに迷い込んでくるから

679 名前:デフォルトの名無しさん [2021/04/11(日) 15:15:06.07 ID:gwmbiGIQ.net]
●Regular Expressionの使用環境
C#

●検索か置換か?
置換

●説明
アダルトビデオDBから取得したタイトルの最後が
女優名だった場合は消したい

●対象データ
女優    |タイトル
-----------------------------
三上悠亜  |下着モデルをさせられて… フェチズム9ランジェリーSpecial 三上悠亜
三上悠亜  |三上悠亜のPLATINUM SOAP
高橋しょう子|バキュームフェラ大好きお姉さんのディープスロート・たっぷり射精・追撃おしゃぶり 高橋しょう子
高橋しょう子|高橋しょう子 初BEST 12タイトル720分

●希望する結果
女優    |タイトル
-----------------------------
三上悠亜  |下着モデルをさせられて… フェチズム9ランジェリーSpecial
三上悠亜  |三上悠亜のPLATINUM SOAP
高橋しょう子|バキュームフェラ大好きお姉さんのディープスロート・たっぷり射精・追撃おしゃぶり
高橋しょう子|高橋しょう子 初BEST 12タイトル720分

680 名前:デフォルトの名無しさん [2021/04/11(日) 16:16:34.91 ID:RGQ7rYBB.net]
●Regular Expressionの使用環境
Windows PowerShell

●検索か置換か?
置換

●説明
「秒・コンマ」を「時・分・秒・コンマ」に置換

●対象データ
start="123.45"

●希望する結果
start="00:02:03.45"

よろしくお願いします
割り算の商とあまりはPowerShellの関数で
2 = [int](123/60)
3 = 123 % 60
で求められます



681 名前:デフォルトの名無しさん mailto:sage [2021/04/11(日) 16:38:01.79 ID:j2wFoRQW.net]
鬼雲
^(\S+)[  ]*|.+\K\s++\1$
^([^|]+)[  ]*|.+\K\s++\1$

.Net だとこんな感じ?未確認
(?<=^([^|]+?)\s*|.+)(?>\s+)\1$
空文字に置換

682 名前:デフォルトの名無しさん mailto:sage [2021/04/11(日) 17:10:39.69 ID:Mhxpz1MA.net]
>>651
[TimeSpan]::new(([double]$start)*10000000).tostring("hh\:mm\:ss\.ff")

683 名前:デフォルトの名無しさん mailto:sage [2021/04/11(日) 21:30:29.49 ID:LXnW0jT4.net]
>>650
Ruby なら、そういう関数がある

delete_suffix!(suffix) -> self | nil
self の末尾から、破壊的に suffix を削除します

[PARAM] suffix:
末尾から削除する、文字列を指定します

[RETURN]
削除した場合は self、変化しなかった場合は nil

"hello".delete_suffix!("llo") # => "he"
"hello".delete_suffix!("hel") # => nil

684 名前:645 mailto:sage [2021/04/11(日) 21:41:09.21 ID:RGQ7rYBB.net]
できました!

685 名前:デフォルトの名無しさん mailto:sage [2021/04/11(日) 21:55:24.47 ID:Mhxpz1MA.net]
>>650
.replace(/^(([^\s| ]+)[\s ]*|.+?)[\s ]*\2[\s ]*$/gm, "$1")

686 名前:デフォルトの名無しさん mailto:sage [2021/04/11(日) 22:20:20.90 ID:Mhxpz1MA.net]
.replace(/^[  ]*(([^|]+)[  ]*|.+?)[  ]*\2[  ]*$/gm, "$1")
行先頭に空白がある場合が抜けてた(\sは半角スペースに変更)

姓名の間にスペースある場合も同じデータならマッチする
 三上 悠亜  |下着モデルをさせられて… フェチズム9ランジェリーSpecial 三上 悠亜

687 名前:デフォルトの名無しさん [2021/04/14(水) 00:43:38.97 ID:Yf/xZwJ6c]
エンジニア、テクノロジスト、テクニシャン
yoshi-s.cocolog-nifty.com/cpu/2016/08/post-bbd2.html
エンジニア、テクノロジスト、テクニシャンの違いについて
ddcph.hatenablog.com/entry/2016/06/08/000000
エンジニアとテクニシャンあるいは技術屋と職人の違い
www.02320.net/technician_or_engineer/
あなたは本当にエンジニアですか?海外で「私はWebエンジニアです」と
名乗ると「経済学部卒なのに?」と聞かれた理由。
https://note.com/rdlabo/n/n36a85584edd5
エンジニアとは何か(日本と欧米の違い)
https://ce-akimoto.com/archives/1180
はたして3ヶ月でエンジニアになれるのか
https://tsukamon.com/blogs/7
エンジニアは「技術者」ではない。それは「工学者」である。
https://togetter.com/li/915192
技術者と技能者
www2.kanazawa-it.ac.jp/intreng/engineer/data/about_engineer.html
工学系大学卒業者は皆エンジニアか ?
https://webty.jp/staffblog/blog/post-3622/
第18回:「テクノロジスト」の社会的認知が必要
https://xtech.nikkei.com/it/article/COLUMN/20070510/270612/

688 名前:デフォルトの名無しさん [2021/04/15(木) 17:26:54.76 ID:n7ib2P7L.net]
phpの実装前提です。
以下のサイトについて質問です。

https://www.javadrive.jp/regex-basic/sample/index13.html

[a-zA-Z0-9_+-]+(.[a-zA-Z0-9_+-]+)*@

で以下のような文字列の表現らしいのですが、

aaaaaaaaaaa@
aaa.aaaaaaa@
aa.aa.aaaaa@
aa.aa.aa.aa@

この()の中にある.ピリオドって、メタ文字の意味ですか?
本来なら、

[a-zA-Z0-9_+-]+(/.[a-zA-Z0-9_+-]+)*@

が正しくないですか?

689 名前:デフォルトの名無しさん [2021/04/15(木) 17:30:30.96 ID:n7ib2P7L.net]
(ごめんなさい。上記修正です。。)
本来なら、

[a-zA-Z0-9_+-]+(\.[a-zA-Z0-9_+-]+)*@

が正しくないですか?

690 名前:デフォルトの名無しさん mailto:sage [2021/04/15(木) 18:09:09.76 ID:2/Cpiffz.net]
試せばすぐわかるやろ
https://regex101.com/r/weGCyh/1



691 名前:デフォルトの名無しさん [2021/04/15(木) 18:22:25.76 ID:n7ib2P7L.net]
ありがとうございました。
こんなツール初めてしりました。


aaaaaあaaaaa@
↑でも合致しますので、ページの説明としては不適切におもいました。

692 名前:デフォルトの名無しさん mailto:sage [2021/04/15(木) 18:41:07.32 ID:5RsSqrLU.net]
>>659
メールアドレスのアカウント部の判別って意味だろうから、
メタ文字ではなく本来\が必要な、文字としてのドットだね

693 名前:デフォルトの名無しさん [2021/04/15(木) 18:43:40.23 ID:n7ib2P7L.net]
>>663
ありがとうございました。確信がもてました!

694 名前:デフォルトの名無しさん [2021/04/16(金) 08:22:32.69 ID:jY/tNYiK.net]
そんな糞サイトを見るのはやめた方がいい

695 名前:デフォルトの名無しさん [2021/04/18(日) 11:01:19.33 ID:GrVz/jbm.net]
●Regular Expressionの使用環境
C#

●検索か置換か?
検索

●説明
表のデータを名前付きでキャプチャしたい(year,month,day;open;high;low;close;volume)
日付 <td class="XXX">(?<year>\d{4})/(?<month>\d?\d)/(?<day>\d?\d)</td>

株価 <td>(?<open>[0-9,.]+)</td>\r\n
<td>(?<high>[0-9,.]+)</td>\r\n
<td>(?<low>[0-9,.]+)</td>\r\n
<td>(?<close>[0-9,.]+)</td>\r\n
<td>.*</td>\r\n<td>(?<volume>[0-9,.]+)</td>
●対象データ
<tr>
<td class="XXX">2021/04/02</td> 日付
<td class="YYY">8,514.0</td >始値
<td class="YYY">8,601.0</td> 高値
<td class="YYY">8,435.0</td> 安値
<td class="YYY">8,465.0</td> 終値
<td class="YYY">8,465.0</td> 調整後終値
<td class="YYY">4,338,300</td>出来高
</tr>

●希望する結果
<td class="XXX">(?<year>\d{4})/(?<month>\d?\d)/(?<day>\d?\d)</td>
または<td>(?<open>[0-9,.]+)</td>単独だと一致するが日付と株価を全部つなげると駄目なので一致するようにしたい

御教示よろしくお願いします

696 名前:デフォルトの名無しさん mailto:sage [2021/04/18(日) 13:04:59.48 ID:8BgTcnje.net]
構造があるものは、正規表現では難しい。
スクレイピングは、Ruby で、nokogiri なら、

require 'nokogiri'

doc

697 名前:= Nokogiri::HTML(<<EOT)
<tr>
<td class="XXX">2021/04/02</td> 日付
<td class="YYY">8,514.0</td >始値
<td class="YYY">8,601.0</td> 高値
<td class="YYY">8,435.0</td> 安値
<td class="YYY">8,465.0</td> 終値
<td class="YYY">8,465.0</td> 調整後終値
<td class="YYY">4,338,300</td>出来高
</tr>
EOT

element = doc.at_css( 'tr > td.XXX' )
puts element.content
#=> 2021/04/02

elements = doc.css( 'tr > td.YYY' )
puts elements.map( &:content ).join( " : " )

#=> 8,510.0 : 8,595.0 : 8,432.0 : 8,462.0 : 8,462.0 : 4,337,300
[]
[ここ壊れてます]

698 名前:デフォルトの名無しさん [2021/04/18(日) 16:50:35.98 ID:GrVz/jbm.net]
>667
回答有難うございます テストツールではじかれるのそういうことなんですか
perlでならCSSセレクタ使って取れるんですが遅くてRubyでも同じでしょうね

699 名前:デフォルトの名無しさん mailto:sage [2021/04/18(日) 19:18:36.24 ID:3ca8v7Vr.net]
>>666
対象データの各行の後ろに実際には日本語はないってことでいいんだよね?

700 名前:デフォルトの名無しさん mailto:sage [2021/04/18(日) 19:29:32.94 ID:3ca8v7Vr.net]
日付の正規表現省略</td>
<td class="YYY">(?<open>[0-9,.]+)</td>\s+<td class="YYY">(?<high>[0-9,.]+)</td>\s+以降の正規表現省略

C#(実質.NET?)の正規表現は詳しくないし試してないけど、
一般的なPerl5系列の正規表現なら\sのマッチ対象(ホワイトスペース)に
\rや\nも内包されてるので、
\s+で改行と<tdの前のスペースインデントに対応できると思う



701 名前:663 mailto:sage [2021/04/18(日) 19:31:55.31 ID:3ca8v7Vr.net]
>>670訂正
日付の正規表現省略</td>\s+<td class="YYY">(?<open>[0-9,.]+)</td>\s+<td class="YYY">(?<high>[0-9,.]+)</td>\s+以降の正規表現省略

702 名前:デフォルトの名無しさん [2021/04/18(日) 19:33:30.21 ID:KOpB5ISv.net]
空白とか考慮してねんじゃねーの
提示されてるデータ見ても</td >始値だけ違ってるし
改行の扱いで転けてる可能性も

703 名前:デフォルトの名無しさん [2021/04/18(日) 20:10:08.07 ID:GrVz/jbm.net]
対象データの後ろの日本語は注記で実際にはありません

704 名前:デフォルトの名無しさん [2021/04/18(日) 20:17:06.51 ID:GrVz/jbm.net]
>670,671
有難うございました \s+ でつなげて上手くゆきました

705 名前:デフォルトの名無しさん [2021/04/18(日) 20:42:16.44 ID:P53jdUzk.net]
Rubyくん=糖質w

706 名前:デフォルトの名無しさん [2021/04/23(金) 13:32:17.18 ID:wRSxYRWl.net]
Pythonで以下の条件に当てはまる正規表現はどうしたら実現できるでしょうか。

半角英数字(大文字小文字)255文字までとハイフンのみOK
--の連続は不可。行末がハイフンで終わるのも不可

ここまではできてるんですが、どなたか知恵を頂きたいです。
^[a-zA-Z0-9-]*(?<!-)$

707 名前:デフォルトの名無しさん mailto:sage [2021/04/23(金) 13:46:23.58 ID:lAJIVY64.net]
pythonなら正規表現だけで処理しなくても
抜き出した後に--が含まれるのを除くとかどうにでもなるだろ。

708 名前:デフォルトの名無しさん mailto:sage [2021/04/23(金) 13:47:26.10 ID:S2TaYi95.net]
^(?:(?!--)[a-zA-Z0-9-])*(?<!-)$
^(?!.*--)[a-zA-Z0-9-]*(?<!-)$
まあこの2つの書き方を覚えればいいんじゃない?
ただ空行もマッチしちゃうよ

709 名前:669 [2021/04/23(金) 14:25:42.69 ID:wRSxYRWl.net]
>>677
確かにそうですが、ちょっと格好つけたかったんです。

>>678
おぉぉぉぉありがとうございます。
とっても助かりました!!
おかげでこの先、頑張れそうです。。。(定時まで)

710 名前:デフォルトの名無しさん mailto:sage [2021/04/23(金) 16:59:46.76 ID:vxdqi9h5.net]
自分で理解できない正規表現とか組み込んで、この先メンテナンスできるんだろうか。
一時的なことならいいが



711 名前:デフォルトの名無しさん mailto:sage [2021/04/23(金) 17:20:20.44 ID:S2TaYi95.net]
この程度見れば何してるか理解できるよね
2つは記述は似てるけど考え方が少し違う

712 名前:デフォルトの名無しさん mailto:sage [2021/04/23(金) 18:40:17.97 ID:WE1AtRNI.net]
^(?>-?+[a-z0-9]){0,255}$

713 名前:デフォルトの名無しさん mailto:sage [2021/04/23(金) 20:39:56.15 ID:EZOqnzXJ.net]
条件が曖昧なので2通り(定時回ってそうだが)

# ハイフン含めて255文字
^([0-9A-Za-z]|-(?!(-|$))){1,255}$

# ハイフンは255文字に含めない
^(-?[0-9A-Za-z]){1,255}$

>>682
試したら"?>"など知

714 名前:らんって言われた []
[ここ壊れてます]

715 名前:デフォルトの名無しさん mailto:sage [2021/04/23(金) 21:20:25.48 ID:S2TaYi95.net]
?+も無いみたい

716 名前:デフォルトの名無しさん mailto:sage [2021/04/24(土) 01:22:36.39 ID:fpQdUE+5.net]
先読み後読みは方言が多いものね

717 名前:デフォルトの名無しさん mailto:sage [2021/04/25(日) 23:25:43.60 ID:AhiBFSkY.net]
単純に ^(-?[a-zA-Z0-9])[0,255]$ とかで良かったんじゃないかな

718 名前:デフォルトの名無しさん mailto:sage [2021/04/25(日) 23:27:08.69 ID:AhiBFSkY.net]
>>683と重複した。スマン

719 名前:669 [2021/04/26(月) 16:56:04.35 ID:SkU1AL8m.net]
みなさんありがとうございます。
こんな正規表現良く書いたねーって先輩のレビュアーに言われて、
詳しく説明してって言われたんですが説明できなかったので、
頂いた数々の秘技を頑張って理解していこうと思います。(定時まで)

720 名前:デフォルトの名無しさん mailto:sage [2021/05/07(金) 02:26:32.28 ID:FTeVmJ7m.net]
以前使っていた正規表現の質問専用スレが見当たらないからここで聞きたい
javascriptで以下のマッチングを行うとマッチするけど、キャプチャの分が取得されない。
どうしたらいいんだろう

let abc = "/abcd/357/1/";
let regex = /^\/abcd\/(\d+)\/\d+\/$/gi;

let result = abc.match(regex);

console.log(result.length);

この出力が1になる。(\d+)も含めた2になってほしい



721 名前:デフォルトの名無しさん mailto:sage [2021/05/07(金) 02:44:53.78 ID:O1URPzeE.net]
matchAllかwhile regex.exec(string) !== null

722 名前:デフォルトの名無しさん mailto:sage [2021/05/07(金) 03:03:26.43 ID:FTeVmJ7m.net]
解決したわ
gあるとキャプチャ取得されないって書いてあったわ

>>690
すまん

723 名前:デフォルトの名無しさん mailto:sage [2021/05/18(火) 11:17:29.67 ID:XAxheHxj.net]
元データ
1621299591.842348,378,666,111,84

これをサブパターンで以下のように抽出したいです。
1621299591.842348
378
666
111
84

最終的な目的としては、ZabbixでCSV形式ログから値を取りたいです。
いろんなサイトを参考にしてるんですが、簡単そうに見えてこれが実現できる例が見つけられず。

724 名前:デフォルトの名無しさん mailto:sage [2021/05/18(火) 11:25:45.08 ID:ZvUkaH8s.net]
([^,]*)
じゃあかん?

725 名前:デフォルトの名無しさん mailto:sage [2021/05/18(火) 11:27:05.69 ID:YmpO7+1q.net]
>>692
それって正規表現で処理する部分なのか?
本当にそのままのデータなら/,/¥n/だろ。

726 名前:デフォルトの名無しさん mailto:sage [2021/05/18(火) 12:29:17.50 ID:AY6+4ZvQ.net]
>>692
Zabbixは1つの値で1つのitemなので
(.*),(.*),(.*),(.*),(.*)みたいな正規表現を使って$1~$5を出力するそれぞれ別の依存itemを登録するんじゃない?

727 名前:685 mailto:sage [2021/05/18(火) 13:08:11.81 ID:XAxheHxj.net]
ありがとうございます。
logrt["/var/log/^.*\.txt$","^([0-9]+).([0-9]+),([0-9]+),([0-9]+),([0-9]+),([0-9]+)$",,,,\3,,]
こんな感じでできました。
ご指摘通り\3のところを\4や\5にしたアイテムを別途作成。

728 名前:デフォルトの名無しさん mailto:sage [2021/05/18(火) 14:48:27.97 ID:AY6+4ZvQ.net]
>>696
ログファイルを指定するアイテムは1つにして
それに依存する依存アイテムを5つ作ったほうが処理効率がいいと思う
https://www.zabbix.com/documentation/current/manual/config/items/itemtypes/dependent_items

729 名前:685 mailto:sage [2021/05/18(火) 17:53:24.64 ID:XAxheHxj.net]
>>697
依存アイテムの保存前処理で上の正規表現入れてできました!

730 名前:デフォルトの名無しさん mailto:sage [2021/05/20(木) 17:15:23.25 ID:Bfk5GZud.net]
こんにちは
質問です

●Regular Expressionの使用環境
普通のテキストファイル
いま Sublime text を使ってますが無料のエディタなら何でも使います

●検索か置換か?
置換

●説明
各パラグラフの1行目を2行目以下の全ての行に加えたい
1行目はパラグラフごとに異なり、2行目以下はすべて異なる





731 名前:対象データ
/system/app
AntHalService
AutoRegistration
BasicDreams

/system/priv-app
AutoKillService
BackupRestoreConfirmation

●希望する結果
AntHalService^=/system/app/AntHalService
AutoRegistration^=/system/app/AutoRegistration
BasicDreams^=/system/app/BasicDreams
AutoKillService^=/system/priv-app/AutoKillService
BackupRestoreConfirmation^=/system/priv-app/BackupRestoreConfirmation

よろしくお願いします
[]
[ここ壊れてます]

732 名前:デフォルトの名無しさん mailto:sage [2021/05/20(木) 17:34:20.04 ID:HTt3W2mn.net]
正規表現だけで可能なのか?
適当なスクリプト使った方が手っ取り早いような。

733 名前:デフォルトの名無しさん mailto:sage [2021/05/20(木) 17:50:54.95 ID:yRtliBGo.net]
まずパラグラフをどう判断するかの条件も書かれてないしね
書かれてる2項目だけでいいならできるけど、
望むことはパラグラフの1行目の自動取得だろうし

734 名前:デフォルトの名無しさん mailto:sage [2021/05/20(木) 17:55:02.71 ID:HTt3W2mn.net]
>>701
ちなみに、上記限定だったらどう書くの?
自分はちょっと思い浮かばない。

735 名前:デフォルトの名無しさん mailto:sage [2021/05/20(木) 18:33:52.42 ID:+Y6kAz1b.net]
各段落1行目の前が空行でそれ以外に空行は無い とか
1行目行頭だけが"/"で他の行頭には"/"は無い とか
1行目だけが保ち得る条件が必要なのと

各段落の行数が同じで無いとキャプチャは出来ても置換で参照使えなくね?

・1行目の一意な条件
・段落の行数が一定
このふたつの条件満たさないと正規表現だけでは無理じゃね?

736 名前:デフォルトの名無しさん mailto:sage [2021/05/20(木) 18:58:29.37 ID:+Y6kAz1b.net]
段落の最大行数に合わせて置換式書いておいて置換後
2度目に 行頭が "^=" の行を削除 なら行数不定でも出来るだろうけど
美しくないしスクリプトの方が適してると思う

737 名前:デフォルトの名無しさん mailto:sage [2021/05/20(木) 19:09:27.78 ID:IKwP0pwO.net]
可変長戻り読みしか思いつかなかった

>>699
https://regex101.com/r/DcrdT0/1
エディタ代わりにこのページを使うならUpdate Regexは絶対にするなよ

738 名前:692 mailto:sage [2021/05/20(木) 19:35:18.66 ID:Bfk5GZud.net]
みなさんありがとうございます

>>705
https://regex101.com/r/DcrdT0/1 のようにしても Sublime ではマッチしないんですが
おすすめのエディタはありますでしょうか?

また、
> エディタ代わりにこのページを使うならUpdate Regexは絶対にするなよ
なぜでしょうか?

739 名前:デフォルトの名無しさん mailto:sage [2021/05/20(木) 20:05:29.92 ID:w4VGBl/7.net]
>>706
https://regex101.com/r/fg8u8n/1を見ればわかるとおり「対象とする文章も保存される」ため
一般的に漏洩したら問題でしょ?

740 名前:excel [2021/06/04(金) 12:46:03.38 ID:2GkS5bYGB]
Excel vbaで正規表現(RegEx)を使用して、データをフィルターする
https://www.ceodata.com/excel-vba-regex/



741 名前:excel [2021/06/04(金) 12:47:05.19 ID:2GkS5bYGB]
正規表現(RegEx)を使用して、データをフィルターする
https://www.ceodata.com/excel-vba-regex/

742 名前:excel [2021/06/04(金) 12:47:43.72 ID:2GkS5bYGB]
正規表現(RegEx)を使用して、データをフィルターする
https://www.ceodata.com/excel-vba-regex/

743 名前:excel [2021/06/04(金) 12:48:14.68 ID:2GkS5bYGB]
正規表現(RegEx)を使用して、データをフィルターする
https://www.ceodata.com/excel-vba-regex/

744 名前:デフォルトの名無しさん [2021/06/06(日) 00:44:09.36 ID:ce69fX3zS]
スクレイピングツールのOctoparseで正規表現ツールがあって使い心地もよい
機能としては簡単だけど十分
https://helpcenter.octoparse.jp/hc/ja/articles/360018677379-Octoparse%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE%E3%83%84%E3%83%BC%E3%83%AB

745 名前:デフォルトの名無しさん mailto:sage [2021/06/24(木) 21:40:32.01 ID:9+/dPFw/.net]
●Regular Expressionの使用環境
サクラエディタ

●検索か置換か?
検索(正規表現で色を付けるため)

●説明
各行の最後に現れる:の直後から行末までを一致させたい

●対象データ
intval:i:1
strval:s:0,1,563,11,1913,1033

●希望する結果
1
0,1,563,11,1913,1033

よろしくお願いします

746 名前:デフォルトの名無しさん [2021/06/24(木) 22:02:05.04 ID:oCTUQBV1.net]
:と改行以外が行末まで続くんだろ
:([^:\n]*)$
お願いしないといけないようなところあるか?
どーせ:はハイライトしたくないとかだろうけど
肯定戻り読み(?<=regex)使うだけだよな
(?<=:)([^:\n]*)$
これお願いしないといけないようなところあるのか?

747 名前:701 mailto:sage [2021/06/24(木) 22:04:31.86 ID:9+/dPFw/.net]
>>714
超ありがとうございました!

(肯|否)定(先|後)読みがうまく使えなくて・・・

748 名前:デフォルトの名無しさん mailto:sage [2021/06/26(土) 22:47:52.84 ID:jTUBzdfm.net]
●Regular Expressionの使用環境
Powershell

●検索か置換か?
置換

●説明
フォルダにつけている日付のフォーマットを変えたい
作業範囲はカレントフォルダだけで良いです #下階層には行かない

●対象データ
[2020.12.20] AA案件 [作業者A]
[2021.04.02] DD案件 [作業者BB]
[2021.06.15] GGGGG案件 [作業者D]
[2021.07.07] BBB案件 [作業者A]

●希望する結果
[201220] AA案件 [作業者A]
[210402] DD案件 [作業者BB]
[210615] GGGGG案件 [作業者D]
[210707] BBB案件 [作業者A]

よろしくお願いします。

749 名前:デフォルトの名無しさん [2021/06/27(日) 00:07:19.19 ID:9wAo5BpJ.net]
ほぼそのままだろ
www.atmarkit.co.jp/ait/articles/1411/07/news133.html

750 名前:デフォルトの名無しさん [2021/06/28(月) 18:13:23.38 ID:V/YMeLZd.net]
pythonです

.foo.xxx_var
.foo.foo.yyy_var
この二種類の形式の文字列があるとき
xxxとyyyだけほしいんですがどう書いたらいいですか?



751 名前:デフォルトの名無しさん [2021/06/28(月) 18:14:54.33 ID:V/YMeLZd.net]
xxxとyyyの部分は可変長の英数記号です

752 名前:デフォルトの名無しさん mailto:sage [2021/06/28(月) 18:34:58.46 ID:LBPB01By.net]
def getxy(s):
return s[s.rfind('.')+1:s.rfind('_')]


a=getxy('.foo.xxx_var')

753 名前:デフォルトの名無しさん mailto:sage [2021/06/28(月) 18:39:07.90 ID:JVYonSFO.net]
('.')
('_')
顔文字みたいで可愛くてワロタ

754 名前:デフォルトの名無しさん [2021/06/28(月) 19:17:22.90 ID:V/YMeLZd.net]
>>720
rfind知りませんでした。ありがとう


不格好だけど
findall("(.+\.)?(.+)_var")[0][1]
でも取れました。正規表現てどんな順番で書いていけばいいのかわからん…

755 名前:デフォルトの名無しさん mailto:sage [2021/06/28(月) 20:24:42.57 ID:dny5MV4o.net]
s='.foo.xxx_var'
re.search('([^.]*)_',s).group(1)

756 名前:デフォルトの名無しさん mailto:sage [2021/06/28(月) 20:50:58.81 ID:quG4wdoj.net]
Ruby で作ってみた

# 最後のドットと、_ の間の文字列を抜き出す。該当なしなら、nil を返す

def slice_string( input_str )
pos_1 = input_str.rindex( "." ) # 文字列の末尾から探す
return nil unless pos_1

pos_2 = input_str.index( "_", pos_1 + 1 ) # ドットの次の文字から探す
return nil unless pos_2

return input_str.slice( pos_1 + 1 ... pos_2 )
end

input_ary = %w(.foo.xxx_var .foo.foo.yyy_var .zz zz)

p input_ary.map{ |str| slice_string( str ) }
#=> [ "xxx", "yyy", nil, nil ]

757 名前:デフォルトの名無しさん [2021/06/28(月) 21:04:09.77 ID:3eYqyq98.net]
>>724
このキチガイどこにでも湧くのなw

758 名前:デフォルトの名無しさん mailto:sage [2021/06/28(月) 21:44:37.04 ID:24AqjAIP.net]
各言語でそれぞれ書き込む事態にでもならなきゃ自分の行いがいかにウザイかを実感できない人なんだろう
まったくの場違いだと言うのにそれに気づかないもんな

759 名前:デフォルトの名無しさん mailto:sage [2021/06/28(月) 21:48:35.68 ID:LpQ5PmfN.net]
>>725-726
なんでお前ら相手するんだ?

760 名前:デフォルトの名無しさん [2021/06/29(火) 00:51:17.13 ID:f7Gcy3Ty.net]
jien



761 名前:デフォルトの名無しさん mailto:sega [2021/06/29(火) 13:25:19.76 ID:hNYNhvVW.net]
先頭以外の A をすべて S に置換
って一般解としてどう書くの?

AAAEAA を ASSESS にしたいとか

762 名前:デフォルトの名無しさん mailto:sage [2021/06/29(火) 13:47:51.52 ID:g0ftD4JU.net]
(?!^)A

763 名前:デフォルトの名無しさん mailto:sage [2021/06/29(火) 13:49:05.67 ID:FsexkEm/.net]
(?!^)A

764 名前:デフォルトの名無しさん mailto:sage [2021/06/29(火) 15:16:43.44 ID:W3FYE8ZM.net]
>>730-731
センキューベリーmatch

765 名前:デフォルトの名無しさん mailto:sage [2021/07/02(金) 02:33:14.69 ID:aZbrSReX.net]
>>732
評価する []
[ここ壊れてます]

767 名前:デフォルトの名無しさん [2021/07/02(金) 08:13:06.57 ID:Rii8+UZr.net]
下URLにあるPerlのRegexp::Optimizerのように、正規表現を最適化するC/C++用ライブラリはご存じないですか?
https://metacpan.org/pod/Regexp::Optimizer

768 名前:デフォルトの名無しさん [2021/07/02(金) 13:04:44.47 ID:TPqIrTa2.net]
●Regular Expressionの使用環境
python3.8.5

●検索か置換か?
置換

●説明
<数字>以外の<>を外したい

●対象データ
[<< ><test<<012>>name1><> >]
●希望する結果
[ test<012>name1 ]

769 名前:デフォルトの名無しさん mailto:sage [2021/07/02(金) 14:24:45.40 ID:jArCbPhS.net]
可変長の否定戻り読みが使えるなら
<(?!\d+>)|(?<!<\d+)>

数字の桁が3桁固定なら
<(?!\d+>)|(?<!<\d\d\d)>

770 名前:デフォルトの名無しさん [2021/07/02(金) 14:35:17.70 ID:TPqIrTa2.net]
>>736
すいません、説明が足りなくて
可変長で、可変長扱えないです(´;ω;`)



771 名前:デフォルトの名無しさん [2021/07/02(金) 14:47:29.27 ID:TPqIrTa2.net]
あれか
<(\d+)>のサイズ取得して動的にするのか…

772 名前:デフォルトの名無しさん [2021/07/02(金) 14:52:33.23 ID:dFaH8qnm.net]
>>735
re.sub(r'(<[0-9]+>)|[<>]', r'\1', '[<< ><test<<012>>name1><> >]')

>>511のパターン
これ使い勝手良いね

773 名前:デフォルトの名無しさん mailto:sage [2021/07/02(金) 14:54:06.60 ID:DfuUcF9q.net]
>>735
pythonなら正規表現だけにこだわらなきゃ<¥d+>さえ拾えばどうとでもなるだろ。

774 名前:デフォルトの名無しさん mailto:sage [2021/07/02(金) 15:02:33.69 ID:u75TM6NR.net]
このスレって有能な人いてステキ///

775 名前:デフォルトの名無しさん mailto:sage [2021/07/02(金) 15:14:25.77 ID:t4sxB6eQ.net]
数値がネストした構造の一番内側にあるとは限らないんじゃないの?

776 名前:デフォルトの名無しさん [2021/07/02(金) 16:18:03.06 ID:TPqIrTa2.net]
>>739
すごい
これどうなってるんですか?
なんでorの前のヤツだけ置換されるの?

777 名前:デフォルトの名無しさん [2021/07/02(金) 16:56:02.25 ID:dFaH8qnm.net]
>>743
| の左右どちらに一致した場合でも \1 に置換している
ただし片方にしか \1 に対応する括弧がない——というのがミソ

左側 (<[0-9]+>) に一致したときの \1 は 一致した全体なので結果として何も変わらな

778 名前:
右側 [<>] に一致したときの \1 は空なので削除される
[]
[ここ壊れてます]

779 名前:デフォルトの名無しさん mailto:sage [2021/07/02(金) 17:12:17.66 ID:3MNaXJzy.net]
<><abc><value<123<x>>/value><>
こういうパターンはあるのか?

780 名前:デフォルトの名無しさん mailto:sage [2021/07/02(金) 17:17:38.07 ID:+v1CDJ0v.net]
> ●説明
> <数字>以外の<>を外したい



781 名前:デフォルトの名無しさん [2021/07/02(金) 17:22:56.52 ID:TPqIrTa2.net]
>>744
あーなるほど
すごいなあ

782 名前:デフォルトの名無しさん mailto:sage [2021/07/02(金) 17:26:47.31 ID:3MNaXJzy.net]
>>746
だからもしこういうのがあるのなら、上の回答じゃダメじゃん
<abc>は消えないぞ

783 名前:デフォルトの名無しさん mailto:sage [2021/07/02(金) 17:29:30.28 ID:+v1CDJ0v.net]
こいつ無能そう

784 名前:デフォルトの名無しさん [2021/07/02(金) 17:49:16.07 ID:TPqIrTa2.net]
size = 4
s1 = entry.get()
s2 = re.sub(r'(<\d+>)|[<>]|[\\/:*?"|]+', r'\1', s1)
ss = [re.sub(r'<(\d+)>', lambda m: f'{{:0{len(m[1])}}}'.format(int(m[1])+i), s2) for i in range(size)]

簡単な範囲リネームソフト作ってて、windowsで使えない文字外して<数字>はカウントアップ がしたかったのでこれで大丈夫のようです.たぶん
入力(スタート値) dir<001>のとき リネーム範囲が2ならdir001,dir002を生成するみたいな

785 名前:デフォルトの名無しさん [2021/07/02(金) 18:45:34.59 ID:Y9y/b0vz.net]
でもさー
結局のところ自分の理解できる範囲で対処できないとブラックボックスでしかないから保守できないよな

786 名前:デフォルトの名無しさん mailto:sage [2021/07/02(金) 19:31:10.32 ID:aZbrSReX.net]
掲示板で説明できることには限界があるからな

787 名前:デフォルトの名無しさん [2021/07/02(金) 20:03:30.56 ID:6v6/dX3F.net]
>>748
なんの環境だと消えないんだろう

788 名前:デフォルトの名無しさん mailto:sage [2021/07/02(金) 21:23:02.60 ID:8o23sM1E.net]
ネストがある構造物は、パーサーを使わないと保守できない。
Ruby のNokogiri みたいな、XML/HTML パーサー

正規表現でバグると、他人が手を出せないので、
結局、パーサーで作り直しになる

アンチパターンの常識

モジュール・デザインパターンの知識が無いから、
何にでも正規表現を使う、香具師と言われている

789 名前:デフォルトの名無しさん mailto:sage [2021/07/02(金) 21:48:40.11 ID:QH8xfbBh.net]
ネストがある構造はRDBで管理するという方法もあるな

790 名前:デフォルトの名無しさん mailto:sage [2021/07/02(金) 23:39:59.09 ID:aZbrSReX.net]
>>739 のパターンは構造を見てない
ノンマッチな><だってホイホイ喰っちまう奴なんだぜ



791 名前:デフォルトの名無しさん [2021/07/03(土) 03:31:09.01 ID:mR1/t/06.net]
manの解析させるルーチンで無制限にネスト潜るの一度だけ書いたこと思い出したわ

792 名前:デフォルトの名無しさん mailto:sage [2021/07/05(月) 13:22:47.46 ID:a0633hZA.net]
1行に「半角スペースと全角スペースが3文字以上ある時」を検出するにはどうすればいいのでしょう?

793 名前:デフォルトの名無しさん mailto:sage [2021/07/05(月) 13:38:25.68 ID:yW7vm9zn.net]
(.*\040|.*\201\100){3}
とかか

794 名前:デフォルトの名無しさん mailto:sage [2021/07/05(月) 13:43:46.12 ID:a0633hZA.net]
>>759
ありがとう試してみます

795 名前:デフォルトの名無しさん mailto:sage [2021/07/05(月) 13:46:58.03 ID:yW7vm9zn.net]
>>759
SJISだったらこうしないとだめか
(([^\201-\237\340-\357]|[\201-\237\340-\357].)*(\040|\201\100)){3}

796 名前:デフォルトの名無しさん mailto:sage [2021/07/05(月) 18:52:47.25 ID:jQnBoLSl.net]
●Regular Expressionの使用環境
サクラエディタ

●検索か置換か?
検索(正規表現で色を付けるため)

●説明
各行の「CR」または「LF」の改行コード部分に一致(CR+LFは一致させない)

●対象データ
あ\r
い\n
う\r\n

●希望する結果
\r
\n

よろしくお願いします

797 名前:750 mailto:sage [2021/07/05(月) 19:33:48.25 ID:jQnBoLSl.net]
なんとか自分で調べて見たんですが、下の正規表現で合ってますか?
[\r\n](?!\n)$

798 名前:デフォルトの名無しさん mailto:sage [2021/07/05(月) 21:45:00.65 ID:oDqG8EZQ.net]
(\r(?!\n))|((?<!\r)\n)
でどうだろう

799 名前:デフォルトの名無しさん mailto:sage [2021/07/05(月) 22:18:11.17 ID:lQZs6uo5.net]
\r$|[^\r]\n$
じゃダメなのかな?

800 名前:デフォルトの名無しさん mailto:sage [2021/07/09(金) 02:51:04.10 ID:Cp8DUWjQ.net]
文中もしくは単独で特定の文字列がある場合を除く
ってどうやるの?



801 名前:デフォルトの名無しさん mailto:sage [2021/07/09(金) 07:34:09.88 ID:XAnKbPPo.net]
^(?~特定の文字列)$
^(?!.*特定の文字列).*$

802 名前:デフォルトの名無しさん mailto:sage [2021/07/09(金) 09:09:31.42 ID:hfuqSqCj.net]
わざわざ貪欲にする必要性がわからん

803 名前:デフォルトの名無しさん [2021/07/11(日) 13:43:32.51 ID:MYTG6y7m.net]
>>766
鬼雲に非包含オペレータを実装した話
https://qiita.com/k-takata/items/4e45121081c83d3d5bfd

804 名前:デフォルトの名無しさん mailto:sage [2021/07/11(日) 13:46:58.01 ID:MYTG6y7m.net]
>>766
非包含パラメータの提唱者のスライドと論文
https://staff.aist.go.jp/tanaka-akira/pub/prosym49-akr-presen.pdf
https://staff.aist.go.jp/tanaka-akira/pub/prosym49-akr-paper.pdf

805 名前:デフォルトの名無しさん mailto:sage [2021/07/11(日) 19:12:06.67 ID:nwBpGTGG.net]
近似解のなにが近似なのかわからん

806 名前:デフォルトの名無しさん mailto:sage [2021/07/11(日) 21:26:31.70 ID:I5zdxibD.net]
>>770
×非包含パラメータ
○非包含オペレータ

807 名前:デフォルトの名無しさん mailto:sage [2021/07/12(月) 09:02:05.45 ID:twuyj4UD.net]
>>771
他の正規表現とつなげると問題が起こる。
例えばコメントの直後にbbbが来るのを \/\*.*?\*\/bbb として
/* */aaa/* */bbb
にマッチさせると /* */aaa の部分も含んで全体がマッチしてしまう。

808 名前:デフォルトの名無しさん mailto:sage [2021/07/12(月) 15:36:01.58 ID:mfnmNh+4.net]
なるほど
ありがとうございます

809 名前:デフォルトの名無しさん mailto:sage [2021/07/12(月) 16:40:03.21 ID:mfnmNh+4.net]
でも少なくとも解2でいいんじゃないか
表現力もたいして変わらない
数文字減るだけののシンタックスシュガーに見える

810 名前:デフォルトの名無しさん mailto:sage [2021/07/29(木) 13:50:04.06 ID:GMofCqjV.net]
●Regular Expressionの使用環境
cygwin grep

●検索か置換か?
検索

●説明
テキストファイルに含まれる改行コードの検索

●対象データ
\r\n(0x0d0a)と\r(0x0d)が混在しているテキストファイル

●希望する結果
それらを検出して \r\nに統一したい。

grep -n -U -P '\x0d'
で検索をかけるとヒットするが
grep -n -U -P '\x0a'
ではなぜか1行もヒットしない
バイナリで確認すると0x0d0aはちゃんと存在しています・・。

とりあえずまずは0x0aを検索にヒットさせたいです。
その後
grep -n -U -P '\x0d[^\x0a]'
のような感じで0x0dの後ろが0x0aでない行を検索して置換できれば良いかなと考えています。
よろしくおねがいします



811 名前:デフォルトの名無しさん [2021/07/29(木) 14:18:21.31 ID:aFdGt9X4.net]
無駄無駄無駄〜

812 名前:デフォルトの名無しさん mailto:sage [2021/07/29(木) 14:21:22.66 ID:J3IrN4Ey.net]
>>776
-aも足してgrep -nUaPでも試してみては?

813 名前:デフォルトの名無しさん mailto:sage [2021/07/29(木) 18:49:46.76 ID:QYfnOwKH.net]
0xが邪魔だったりして

814 名前:デフォルトの名無しさん mailto:sage [2021/07/29(木) 21:48:27.13 ID:j2JISquU.net]
>>776
そのテキストファイルはASCIIなの?
UTF-16だったりEBCDICだったりしない?

815 名前:デフォルトの名無しさん mailto:sage [2021/07/29(木) 21:52:11.90 ID:j2JISquU.net]
>>776
なぜかマッチしないのはcygwin付属のgrepコマンドのバグかもしれないし、
cygwin本体のバージョンを書くか
ダウンロードサイトも書くべきかと

816 名前:デフォルトの名無しさん mailto:sage [2021/07/29(木) 21:56:20.74 ID:j2JISquU.net]
>>776
あとは-Uオプションを外してどうなるか試してみるとか

817 名前:デフォルトの名無しさん mailto:sage [2021/07/30(金) 00:49:58.41 ID:N3W+nBLQ.net]
単純に\nがgrepに食われてるだけだと思う

オプションに-zを入れれば\0区切りになるから\nは残せそうだけど
ファイル全体が1行になるだろうからやりたい事は多分できない

\rを\r\nに統一したいなら各行の末尾以外の\rを\r\nに置換すれば良さそう
grepで検索だけして手作業で直すつもりなのかな

818 名前:デフォルトの名無しさん mailto:sage [2021/07/31(土) 20:32:32.88 ID:jvyZNadn.net]
>>776
解決したの?

819 名前:デフォルトの名無しさん mailto:sage [2021/07/31(土) 20:46:25.03 ID:Op1DTI/B.net]
テキストファイルなんだよね?
だったらテキストエディタで開いて改行コードをCRLFに指定して保存するだけで
改行コードは揃うと思うけど
俺の使ってるエディタでCRLF,CR,LFの3つを混在させたファイルでやってみたけど
全部CRLFに変わってくれたよ

820 名前:デフォルトの名無しさん mailto:sage [2021/08/01(日) 06:07:28.90 ID:jVmJEbam.net]
grepは行単位で処理するが、行は\nで終わることになってる
>>783のいうようにgrepが\nを食ってしまうので\nは検索できない
行末にマッチさせたいなら\nではなく$を使う

が、改行コード変換したいだけならCygwinに最初から入ってるunix2dos/dos2unixでも使えばいい



821 名前:デフォルトの名無しさん mailto:sage [2021/08/01(日) 21:54:31.32 ID:9jBEmz65.net]
>>786
単独のCR(\r)は古いMACに見られる改行コードだから
UNIXの改行LF(\n)でもDOSの改行CRLF(\r\n)でもないよ

822 名前:デフォルトの名無しさん mailto:sage [2021/08/01(日) 23:37:51.19 ID:jVmJEbam.net]
>>787
dos2unix/unix2dosは旧macの改行も変換できるので問題ない

823 名前:デフォルトの名無しさん [2021/08/08(日) 22:31:44.14 ID:9DkM016/v]
サイボウズ青野社長、「本業に集中しないから副業禁止」はあり得ない
https://dogatch.jp/news/tx/txpl

824 名前:us_85504/photo/0/
ブラック企業だったサイボウズが「働き方改革」を実現できた舞台裏
https://bizspa.jp/post-249119/
会社なんてカッパみたいなもの。「複業」を通じて一人ひとりが幸福になる働き方を目指せばいい。
https://jinzai-journal.net/2019/05/24/work/cybozu-1/
副業採用・専業禁止を掲げる企業にみる、複業のメリット/デメリットの解決策
https://www.lancers.jp/magazine/30245
どうしてサイボウズは、働き方を変えられた?
https://toyokeizai.net/articles/-/17941
複業推進の2社が考える「人生100年時代」に必要な働き方とは?
エンファクトリーとサイボウズが考える複業のメリットとは
https://kurashigoto.me/interview/teg95/
“離職率28%の超ブラック企業”が背負った「十字架」
https://shuchi.php.co.jp/article/7013
副業OKの企業一覧まとめ-ダブルワークを許可している会社
https://www.k-society.com/recruit/list-of-companies-allow-side-business/
[]
[ここ壊れてます]

825 名前:デフォルトの名無しさん mailto:sage [2021/08/18(水) 07:15:11.84 ID:zZ9UTeBf.net]
ニュー速VIP板

(?<=ニュー速)VIP(?=板)

↑これは分かるけど

(?=ニュー速)VIP(?<=板)

↑これが分からん

826 名前:デフォルトの名無しさん mailto:sage [2021/08/18(水) 08:14:34.80 ID:zKbbX4Ws.net]
(?=ニュー速)VIP
VIP(?<=板)
これらに一致するものは有り得ない

(?=.*ニュー速)VIP
こうなら有り得る

先読み
(?=abc)
はabcの左側aの手前の「位置」に一致するもの
xabcとあればxとaの間の位置に一致

戻り読み
(?<=abc)
は先読みと反対でabcの後ろcの後の「位置」に一致するもの
abcxとあればcとxの間の位置に一致

つまり
(?=ニュー速) は「ニュー速」の「ニ」の手前の位置に一致するものなので
(?=ニュー速)ニュー速 で無ければ絶対に一致しない条件式となる

827 名前:デフォルトの名無しさん mailto:sage [2021/08/18(水) 08:27:16.61 ID:6oAKTuRB.net]
焦りすぎ

828 名前:デフォルトの名無しさん mailto:sage [2021/08/18(水) 09:49:36.54 ID:zZ9UTeBf.net]
>>791
ああ分かった /VIP(?<=IP)/ というのはVIPの右に(?)がある事からしてVIPのPの右の位置にマシンがカーソルを合わせて次に<という左矢印がある事からしてカーソルの左側にPがあるかどうかを探って次にその一つ左にカーソルを動かしてそのカーソルの左側にIがあるかを探るって訳か

文字にするとややこしいけどイメージはしやすいな

829 名前:デフォルトの名無しさん mailto:sage [2021/08/18(水) 10:53:19.72 ID:tjZSC3cn.net]
> ニュー速VIP板ニュー速板

二つ目の「ニュー速」だけを対象にしたい
(?<=VIP板)ニュー速
前方に「VIP板」のある「ニュー速」

一つ目の「ニュー速」だけを対象にしたい
ニュー速(?=VIP板)
後方に「VIP板」のある「ニュー速」

830 名前:デフォルトの名無しさん mailto:sage [2021/08/18(水) 11:43:36.15 ID:h7WQfPHf.net]
(否|肯)定(先|後)読みは、^(行頭)や$(行末)と同様に"位置"にマッチするメタ文字(「アンカー」)として機能する



831 名前:デフォルトの名無しさん mailto:sage [2021/08/20(金) 00:20:17.08 ID:qpe5vMDv.net]
ここにある正規表現サンプルのURLを取得する正規表現ですけど
間違ってないですか?
https://www.megasoft.co.jp/mifes/seiki/s310.html

urlに'があるurlだと'の後が取得できなくなる。

832 名前:デフォルトの名無しさん mailto:sage [2021/08/20(金) 01:44:25.03 ID:kY+JN5EE.net]
>>796
間違ってるけどメタ文字解説読めばそんなこと分かるだろ

833 名前:デフォルトの名無しさん mailto:sage [2021/08/20(金) 03:11:03.15 ID:WG/a2fPY.net]
厳密なのはいつもの
www.din.or.jp/~ohzaki/perl.htm#httpURL

834 名前:デフォルトの名無しさん mailto:sage [2021/08/20(金) 10:49:36.74 ID:nGw5woYj.net]
これなんで5matchsなの?
https://i.imgur.com/nxnFsqo.jpg

835 名前:デフォルトの名無しさん mailto:sage [2021/08/20(金) 10:57:32.68 ID:OdebcBr3.net]
ピンクの線が5本表示されとるやろ

836 名前:デフォルトの名無しさん mailto:sage [2021/08/20(金) 14:58:31.43 ID:bheJjdjJ.net]
(abc){0}(def){0}

837 名前:デフォルトの名無しさん mailto:sage [2021/08/20(金) 23:05:42.97 ID:P1i1BIPh.net]
>>801
>>800
ああなるほど一文字ずつマッチする上に空文字もマッチするのか

でもtest stringをabcdefとして3マッチになるかと思ったら2マッチなのな

838 名前:デフォルトの名無しさん mailto:sage [2021/08/20(金) 23:47:12.81 ID:WG/a2fPY.net]
基本的にgreedyだから

839 名前:デフォルトの名無しさん mailto:sage [2021/08/21(土) 09:01:29.88 ID:juYH2QqI.net]
abc(def)?|def
空文字に一致しないよう書くべき

840 名前:デフォルトの名無しさん [2021/08/25(水) 01:56:14.92 ID:DUWK9/dO.net]
windowsなんですが、正規表現を使ってファイルのリネームしたいです

hofajkfjda.jpg
fasfdajl.jpg
というファイルがあった場合

new1-hofajkfjda.jpg
new2-fasfdajl.jpg
としたいです

連番を含むのですが、正規表現で可能でしょうか?
また、何のツールを使うといいでしょうか?できればlinuxとwindowsで共通で使えるものがいいんですが。



841 名前:デフォルトの名無しさん mailto:sage [2021/08/25(水) 05:11:18.76 ID:DJHRbWtG.net]
それ正規表現の話じゃないよねスレチ
ファイル名降順(昇順)で頭に(new連番-)付加ならFlexible Renamerとか色んなリネームソフトで出来る
任意の順ならバッチやPowerShell
後は該当スレでどうぞ

842 名前:デフォルトの名無しさん [2021/08/25(水) 10:49:27.59 ID:DUWK9/dO.net]
正規表現では連番は無理なのですか?

843 名前:デフォルトの名無しさん mailto:sage [2021/08/25(水) 11:00:10.58 ID:1f33yFBx.net]
不可能じゃないけど、近所のコンビニへ行くのに絶対にプライベートジェットで行きたいですとか言われてる感じ
もっと他に簡単で向いている方法があるでしょって話

844 名前:デフォルトの名無しさん mailto:sage [2021/08/25(水) 11:02:04.86 ID:pNx7VLY8.net]
文字列の集合を表す記法が正規表現
連番という集合を示せるならできるかもね
自分は知らないけど

845 名前:デフォルトの名無しさん mailto:sage [2021/08/25(水) 11:08:38.01 ID:0azwHm+I.net]
>>805
秀丸ファイラー

ファイル選択→「F2」→「Alt+2」、で連番リネームモードになる

846 名前:デフォルトの名無しさん [2021/08/25(水) 11:30:25.04 ID:DUWK9/dO.net]
>>808
了解です

>>810
flexible renamerにしました。
これより新しくて良いソフトってあるんでしょうかね。

847 名前:デフォルトの名無しさん mailto:sage [2021/08/25(水) 11:40:19.51 ID:b/tFJsW5.net]
質問続けるならせめて礼くらい言ってからにしろ
そもそももうスレチなんだから他へ行け池沼

848 名前:デフォルトの名無しさん mailto:sage [2021/08/25(水) 12:25:51.34 ID:pNx7VLY8.net]
>>811
>>806読んだ上でその書き込みなら流石に傲慢が過ぎる

849 名前:デフォルトの名無しさん mailto:sage [2021/08/25(水) 13:21:49.43 ID:T8xCLAXo.net]
Ruby で作った。
fileutils のDryRun を使ったので、実際には実行されない。
結果を予測して、表示するだけ

require 'fileutils'

# 絶対パスのディレクトリ名の後ろに、* を付けること!
# . で始まる、隠し directory, file を除く

dir_path = "C:/Users/Owner/Documents/*.jpg"
target_dir = File.dirname( dir_path ) # ディレクトリパスだけを取り出す

Dir.glob( dir_path )
.select { |full_path| File.file?( full_path ) } # ファイルのみ
.each.with_index( 1 ) do |full_path, idx| # index は、1 から始まる

dest_path = target_dir + "/new#{ idx }-" + File.basename( full_path )

FileUtils::DryRun.move( full_path, dest_path )
end

出力
mv C:/Users/Owner/Documents/abc.jpg
C:/Users/Owner/Documents/new1-abc.jpg

mv C:/Users/Owner/Documents/xyz.jpg
C:/Users/Owner/Documents/new2-xyz.jpg

850 名前:デフォルトの名無しさん mailto:sage [2021/08/25(水) 18:27:43.69 ID:WqMYsX4p.net]
複数行モード出なくても改行に一致させる事は可能ですか?



851 名前:デフォルトの名無しさん mailto:sage [2021/08/25(水) 23:49:57.87 ID:HwQGLaDN.net]
一致と呼んでいいのか分からないけど$が改行に対応すると思う
文字セットには使えないけどab(c|$)みたいな分岐は可能

852 名前:デフォルトの名無しさん mailto:sage [2021/08/26(木) 04:30:31.47 ID:UZ8JqWyB.net]
複数行モードって何?

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

これの違いは解説でも読めば分かるけど
^ $ . の動作の違いってだけだから、\n,\rはどの場合でも有効だよ

853 名前:デフォルトの名無しさん mailto:sage [2021/08/26(木) 08:14:39.00 ID:nEHOiDh0.net]
ありがとうございます

854 名前:デフォルトの名無しさん mailto:sage [2021/08/26(木) 15:15:16.56 ID:Yy835424.net]
JavaScriptの正規表現によるmatch検索で、「10918」ピッタリの数が存在するか調べたいときのことです
「1091」でも検索に引っかかってしまいます。
どうしたらよいでしょうか

以下の条件では10918だけでなく1091でも検索に引っ掛かります
let a = 1091;
new RegExp(`(?<!\d+)${a}(?!\d+)`, "i")

855 名前:デフォルトの名無しさん mailto:sage [2021/08/26(木) 15:17:19.26 ID:Yy835424.net]
>>819に追記
データは場合によっては「数字 数字 数字」になっており、そこから特定の数字だけ存在するか調べたいです

856 名前:デフォルトの名無しさん mailto:sage [2021/08/26(木) 15:44:49.58 ID:K931sT/w.net]
\d+ → \\d

857 名前:デフォルトの名無しさん mailto:sage [2021/08/26(木) 16:01:36.08 ID:a0WUR1Wk.net]
関係ないけどlookbehind内で正規表現が使えない言語とか多いのな

858 名前:デフォルトの名無しさん mailto:sage [2021/08/26(木) 16:10:30.57 ID:Yy835424.net]
>>821
出来たありがとう

859 名前:デフォルトの名無しさん mailto:sage [2021/08/26(木) 17:04:06.18 ID:/x6E5kVC.net]
区切りがあるならlook aroundする必要ないよね

860 名前:デフォルトの名無しさん mailto:sage [2021/08/26(木) 19:13:53.21 ID:1/m60R21.net]
>>819
正規表現である必要ないんじゃない?
後読みの必要ある?



861 名前:デフォルトの名無しさん mailto:sage [2021/08/27(金) 16:27:34.54 ID:kYh+qXrW.net]
aa●abbbcccd□ddeee
aa□abbbcccd●ddeee

両方にヒット表現をお願いします

862 名前:デフォルトの名無しさん mailto:sage [2021/08/27(金) 16:35:14.96 ID:zrk6+77w.net]
^a

863 名前:デフォルトの名無しさん mailto:sage [2021/08/27(金) 16:35:19.05 ID:7nxBSwRn.net]
そのまんまであれば
aa[●□]abbbcccd[●□]ddeee

864 名前:デフォルトの名無しさん mailto:sage [2021/08/27(金) 16:47:10.72 ID:kYh+qXrW.net]
あ、そうか
aa●abbbcccd●ddeee
aa□abbbcccd□ddeee
はヒットしてほしくないのです

865 名前:デフォルトの名無しさん mailto:sage [2021/08/27(金) 16:56:56.42 ID:mGcBpOgN.net]
じゃあ
(aa●abbbcccd□ddeee|aa□abbbcccd●ddeee)

866 名前:デフォルトの名無しさん mailto:sage [2021/08/27(金) 17:06:33.96 ID:kYh+qXrW.net]
やっぱりそれしかないですかね。実際は
(.*●.*□.*)|(.*□.*●.*)
でこうなるのです
https://i.imgur.com/4VUmVsL.jpg

867 名前:デフォルトの名無しさん mailto:sage [2021/08/27(金) 17:09:48.92 ID:56S9Iaf9.net]
全体をマッチ対象にしたいの?

868 名前:デフォルトの名無しさん [2021/08/27(金) 17:45:24.98 ID:ldxLRyEW.net]
>>829
aa([●□])abbbcccd(?!\1)[●□]ddeee

869 名前:デフォルトの名無しさん mailto:sage [2021/08/27(金) 19:46:53.21 ID:FthY+dex.net]
EmEditorはしらないなー
(?m:(.*●.*□.*)|(.*□.*●.*))

870 名前:デフォルトの名無しさん mailto:sage [2021/08/28(土) 05:34:33.30 ID:Z+kCS9um.net]
.+?([●□]).+(?!\1)[●□].+



871 名前:デフォルトの名無しさん mailto:sage [2021/08/28(土) 08:18:57.05 ID:3w95mdWV.net]
>>831
そのダイアログはCtrl+Cでテキストコピーできると思うからググりやすいように
コピペしてほしいな

あとEmEditorはBoost.RegexとOnigmo(鬼雲)を使い分けられるから、
オプションでどっち使ってるのかも教えて
https://jp.emeditor.com/text-editor-features/history/new-in-version-15-7/

872 名前:デフォルトの名無しさん mailto:sage [2021/08/28(土) 10:30:00.05 ID:2Y0XlSPP.net]
>>836
---------------------------
EmEditor
---------------------------
The complexity of matching the regular expression

873 名前: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に変更したら出なくなりました。
いろいろ新しく知ることが出来ました
[]
[ここ壊れてます]

874 名前:デフォルトの名無しさん mailto:sage [2021/08/28(土) 10:38:46.36 ID:gjZsNEUJ.net]
(?!\1)ってどういう意味?

875 名前:デフォルトの名無しさん mailto:sage [2021/08/28(土) 11:02:34.45 ID:o77XzsS5.net]
>>838
「直前に"一つ目のパターン"がない位置」を指すメタ表現

876 名前:デフォルトの名無しさん mailto:sage [2021/08/28(土) 11:25:40.94 ID:m2ZH6alf.net]
日本語的には"直後に"じゃね?
読んで行く方向、カーソルの前方だとしても直前だと意味が逆転しそう

877 名前:デフォルトの名無しさん mailto:sage [2021/08/28(土) 13:02:42.57 ID:rTzGvJSm.net]
>>833
この(?!/1)は分かるけどその次の[●□]との繋がりが分からん
どういうこと?

878 名前:デフォルトの名無しさん mailto:sage [2021/08/28(土) 13:33:13.98 ID:gjZsNEUJ.net]
ありがとう完全に理解した
\1 は ([●□]) のことを指してて
(?!\1)[●□] で前の ([●□]) で選んだものと被らないようにしてるわけか

879 名前:デフォルトの名無しさん [2021/08/28(土) 15:08:17.46 ID:F14AY+cI.net]
>>841
(?!\1) は「1つめの括弧で一致した内容はこの位置(の直後)には現れない」という言明

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

なので最初の [●□] と二つめの [●□] では必ず互いに異なる文字が一致する、という具合

880 名前:デフォルトの名無しさん mailto:sage [2021/08/28(土) 15:43:56.56 ID:rTzGvJSm.net]
>>843
ああなるほどありがとう!



881 名前:デフォルトの名無しさん mailto:sage [2021/09/03(金) 00:14:54.74 ID:X1LFwexk.net]
●Regular Expressionの使用環境
さくらエディタ

●検索か置換か?
検索

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

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

●希望する結果

「吾輩は猫」「吾輩は三毛猫」「吾輩は犬」「吾輩は犬」
              ^^^^^^^^^

「.*【猫を含まない】」
というような正規表現で、上記のように、
猫を含まない最初の「」に最短一致でマッチする結果を得たいのです。
どなたかお詳しい方、ご教示くださいませ

882 名前:デフォルトの名無しさん mailto:sage [2021/09/03(金) 00:17:33.53 ID:X1LFwexk.net]
連投すみません。
^^^^^^
がズレました。

「吾輩は猫」「吾輩は三毛猫」「吾輩は犬」「吾輩は犬」
のうち、3つ目のカギ括弧、
つまり、1つめの「吾輩は犬」にマッチする正規表現を探しております。

883 名前:デフォルトの名無しさん mailto:sage [2021/09/03(金) 00:36:24.12 ID:OHAz9Fu/.net]
「[^猫]*?」

884 名前:デフォルトの名無しさん mailto:sage [2021/09/03(金) 02:33:55.38 ID:X1LFwexk.net]
>>847
すいません><
例題を単純化しすぎました。
せっかくご回答いただいたのに申し訳ないです。

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

というように、排除したい文字列(ネコ)は複数文字なんです。さらに、カギ括弧が二重の可能性があります。
カギ括弧内にネコを含まないものなら、イヌ以外でもなにがマッチしても問題ありません。
左から見て内部に「ネコ」を含むカギ括弧を排除していき、最初にネコを含まないカギ括弧にマッチさせたいのです。

885 名前:デフォルトの名無しさん mailto:sage [2021/09/03(金) 02:34:57.11 ID:1+MNr6V9.net]
^.*?\K「(?~猫|」)」
^.*?\K「[^猫」]*+」

886 名前:デフォルトの名無しさん mailto:sage [2021/09/03(金) 02:39:58.48 ID:1+MNr6V9.net]
^.*?\K「(?~ネコ|」)」

887 名前:デフォルトの名無しさん mailto:sage [2021/09/03(金) 02:56:17.42 ID:X1LFwexk.net]
>>850
おおお…凄い…できました!
ずっと探し求めていた魔法がここに…

これは、なにが起こっているのでしょうか。
なんらかの後方参照が行われているのは分かるのですが…

888 名前:デフォルトの名無しさん mailto:sage [2021/09/03(金) 03:09:51.13 ID:X1LFwexk.net]
「(?~ネコ|」)の、?~

889 名前:は、「不在繰り返し」というのですね。

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

不在繰り返しなんて便利な表現があったとは…
ご親切にありがとうございます。
[]
[ここ壊れてます]

890 名前:デフォルトの名無しさん mailto:sage [2021/09/04(土) 02:41:25.14 ID:ExeocnPJ.net]
> ?~は、「不在繰り返し」というのですね
違う。?~ だけでは意味を成さない
(?~式) 「非包含オペレータ」 "式" を含まない文字列に一致する
式にあたる部分は "ネコ|」" なので "ネコ" と "」" を含まない文字列に一致



891 名前:デフォルトの名無しさん mailto:sage [2021/09/04(土) 10:50:54.40 ID:vsW0UBqv.net]
非包含オペレータと不在繰り返しは紛らわしいな
(?~ネコ)がネコのネにマッチするかしないか

892 名前:デフォルトの名無しさん mailto:sage [2021/09/04(土) 11:49:17.86 ID:KRHaMmez.net]
「吾輩はネコである」
「(?~ネコ)」 不一致
「(?~ネコ)(?~ネコ)」 一致
「(?~(?=ネコ))(?~ネコ)」 不一致


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

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

893 名前:デフォルトの名無しさん mailto:sage [2021/09/04(土) 15:57:28.08 ID:e0R2hmQ/.net]
この不在繰り返しを、Python3.6のreモジュールで書く方法はありますか?

894 名前:デフォルトの名無しさん mailto:sage [2021/09/08(水) 12:26:11.39 ID:R6BptgGx.net]
むずすぎて全然分からん
まぁPythonで使えんみたいやしいいか

895 名前:デフォルトの名無しさん mailto:sage [2021/09/08(水) 14:14:17.23 ID:QqH5BAVe.net]
文字列の否定は否定先読みで
re.findall("「(?:(?!ネコ).)*」", string)

896 名前:デフォルトの名無しさん mailto:sage [2021/09/08(水) 15:37:03.14 ID:bwkSQigi.net]
(?~abc) "abc"に一致しない文字列に一致。"abc"の"a","ab","bc","c"に一致する
(?:(?!abc).)* "abc"の"a"に一致しない文字列
(?:.(?<!abc))* "abc"の"c"に一致しない文字列

abc に対し
(?~abc)c 一致
(?:(?!abc).)*c 不一致
(?:.(?<!abc))*c 一致

897 名前:デフォルトの名無しさん mailto:sage [2021/09/15(水) 04:13:47.03 ID:2Sm06Jhf.net]
(?~式) 非包含式
(?~) 非包含オペレータ(演算子)  (被演算子は~と)の間に内挿される)
/* 田中さんの元論文がこの使い分けを間違ってるわけだが */

概念を語る場合は、繰り返しや文字クラスや選択のように、単に「非包含」と呼ぶ

898 名前:デフォルトの名無しさん [2021/09/17(金) 16:17:14.17 ID:J/w/zJeW.net]
自己肯定感の低い人が仕事できない本当の理由
https://www.youtube.com/watch?v=BZyX8g1XuXI
【致命的】個人で稼ぐのに向いていない人の特徴7選
https://www.youtube.com/watch?v=PqqCiMMHMy4
自己肯定感の低い人にオススメの副業5選
https://www.youtube.com/watch?v=n2uiQcMmOAg
【質問力】雑魚と思われてしまうダメな質問の仕方5選
https://www.youtube.com/watch?v=eQceW_AcJjM
集団の中で落ちこぼれ組がやりがちなこと
https://www.youtube.com/watch?v=6cuCPaRvAv0
【人気者の基準】有名にならないと言われない暴言3選
https://www.youtube.com/watch?v=YhK7zgvRha0
【本質】みんながフリーランスになれない本当の理由
https://www.youtube.com/watch?v=vA4hTswPgEg

899 名前:デフォルトの名無しさん [2021/09/27(月) 17:11:29.79 ID:yz6wzePk.net]
下記のソフトで書庫ファイルをリネームしたいのですが、正規表現が必須のようです。
どうかご教示をお願いできませんでしょうか。
 https://www.vector.co.jp/soft/winnt/util/se481411.html

【書庫内のファイルの先頭に、親フォルダ名を追加したい】
 例: ○X△.zip 内の 00.jpg~99.jpg を ○X△.zip.00jpg~○X△.zip.99.jpg にしたい

900 名前:849 [2021/09/27(月) 18:00:06.98 ID:yz6wzePk.net]
訂正させて下さい。
 親フォルダ名じゃなく親ファイル名でした。


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

【書庫内のファイルの先頭に親ファイル名を追加したい】
 例: ○X△.zip 内の 00.jpg~99.jpg を ○X△.zip.00jpg~○X△.zip.99.jpg にしたい



901 名前:デフォルトの名無しさん mailto:sage [2021/09/27(月) 18:20:46.41 ID:QHV+6MAZ.net]
そのソフトの機能とあなたがしたい事が正確にはわからんが、
正規表現で自動でディレクトリ名は入らんよ。
それをやりた

902 名前:ゥったら普通はプログラミングの領域。

単に先頭に指定文字列を入れたいなら
検索:^
置換:○X△.zip
[]
[ここ壊れてます]

903 名前:デフォルトの名無しさん mailto:sage [2021/09/27(月) 18:36:25.58 ID:W1wq+c4c.net]
>>862
^:○X△.zip

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

もし処理対象アーカイブが一定数以上あったり、定期的に一定数以上のアーカイブに対して同処理が必要になることが予想される場合、自分なら、1) 作業フォルダに解凍、2) リネーム、3) 再圧縮、4) 元アーカイブに上書きコピー、5) 後片付け、を指定フォルダ以下のアーカイブに対して実行するバッチファイルを書いて、それを実行すると思う(7z)

904 名前:デフォルトの名無しさん mailto:sage [2021/09/27(月) 19:31:31.78 ID:wTAYfgov.net]
>>863
親ファイル(zipファイルのことだよね?)の名前を人手で入れるなら
^:○X△.zip
みたいな感じで行けるんじゃね?
frostmoon.sa
kura.ne.jp/gui4reces/gui4reces0018ss_rename.png

905 名前:デフォルトの名無しさん mailto:sage [2021/09/27(月) 22:31:45.47 ID:2WG9Jybb.net]
ファイル名に拡張子以外のドットは特別な理由でも無い限り使わないようにした方が良い
あと質問内容は正規表現では無くソフトの使い方のようなので微妙にスレチ
作者の宣伝?

906 名前:デフォルトの名無しさん [2021/09/28(火) 09:31:17.72 ID:fMeX4han.net]
皆さん、ありがとうございます。
せっかくアドバイスを頂いたのですが、何が何やらさっぱりで・・・
せめて正規表現を少しでもかじってから再度教えを請いたいと考えていたので返信が遅れてしまいました。
しかし・・・
正規表現のサイトを少し覗いてみたのですが私には敷居が高すぎて・・
もう少し頑張ってみるつもりですが、かなりきつそうです

907 名前:デフォルトの名無しさん mailto:sage [2021/09/28(火) 09:38:51.90 ID:ZQP3z5os.net]
>>868
アドバイスじゃなくて答えが書いてあるんだから、せめて試せよ

908 名前:849 [2021/09/28(火) 10:21:59.42 ID:fMeX4han.net]
す、すみません。
検索文字列とか置換文字列とか難しく考えすぎて、
^:○X△.zip が回答そのものだったとは思いませんでした。

試してみました。
しかし、ログでは成功してるはずなのに実際のファイルはリネームされていません。
ソフトの使用方法がおぼつかないため、もう少し試行錯誤してみます。
とりあえずご報告だけさせて頂きました。

909 名前:デフォルトの名無しさん [2021/09/28(火) 13:29:43.27 ID:T0yrrR3v.net]
○X△を○X△のまま使っただろ?

910 名前:849 [2021/09/28(火) 20:59:21.69 ID:fMeX4han.net]
何でわかるんですかw

第一階層までしかリネームできないみたいです
そうなると、解凍してリネームして再圧縮が正解ですね。
バッチファイルは・・・・・・無理ですが



911 名前:デフォルトの名無しさん [2021/10/04(月) 16:07:06.15 ID:N0nKW8hc.net]
教えてください。
AAAA
AAAA(1)
AAAA(2)
AAAA(3)
という中から
()付きのものだけ抜き出す式はどう描くのでしょうか()の中身ではなくてAAA(3)などを丸ごとです。
お願いします。

912 名前:デフォルトの名無しさん mailto:sage [2021/10/04(月) 16:24:14.46 ID:bhYXHQji.net]
^.*?¥(.*?¥)$

913 名前:デフォルトの名無しさん [2021/10/04(月) 17:32:08.96 ID:N0nKW8hc.net]
>>874
抽出できない・・・です
ごめんなさい、
AAAA(3).doc
とか拡張子もありました。

914 名前:デフォルトの名無しさん [2021/10/04(月) 17:52:45.16 ID:N0nKW8hc.net]
次々すみません()の中は半角1文字の数字です。

915 名前:デフォルトの名無しさん mailto:sage [2021/10/04(月) 17:58:58.66 ID:bhYXHQji.net]
>>875
¥はバックスラッシュに置き換えな
^.*?¥([0-9]¥)

916 名前:デフォルトの名無しさん mailto:sage [2021/10/04(月) 18:06:36.32 ID:bhYXHQji.net]
あと、()が全角と半角では扱いが異なるから書き込むたびに変わってちゃダメ。
全角と半角両方に対応させたいなら^.*?[¥((][0-9][¥))]

917 名前:デフォルトの名無しさん mailto:sage [2021/10/04(月) 19:38:23.48 ID:zsq22U2a.net]
拡張子は含めるの?

918 名前:デフォルトの名無しさん mailto:sage [2021/10/04(月) 19:42:51.89 ID:qPYIGz+e.net]
.*\([0-9]\).*

919 名前:デフォルトの名無しさん mailto:sage [2021/10/15(金) 13:06:48.14 ID:Wvwj+LKl.net]
うんこおおおおおおおおおお

うんこ!!!!!!!!
ってjavascriptで正規表現で変換したいです
text.replace(/うん(こ)+/,"!")だと明らかに上手く行きませんがどうしたらよいのでしょうか?

920 名前:デフォルトの名無しさん mailto:sage [2021/10/15(金) 13:30:38.03 ID:vygdYOMS.net]
検索から違ってるし、function使わんと同回数繰り返すとかは無理
text.replace(/(うんこ)(.+)/,function(s,g1,g2){return g1+Array(g2.length+1).join('!')});



921 名前:デフォルトの名無しさん [2021/10/16(土) 08:23:59.89 ID:akCvqHZs.net]
先頭が-か+か0-9
以降0-9のみ
はどう書きますか?

-123 OK
12+3 NG

922 名前:デフォルトの名無しさん mailto:sage [2021/10/16(土) 08:43:22.00 ID:6ga3nra2.net]
^[\-+]?[0-9]+

923 名前:デフォルトの名無しさん mailto:sage [2021/10/16(土) 09:35:59.80 ID:yphHFJu4.net]
1つ目の文字クラスの中の円マークはなに?

924 名前:デフォルトの名無しさん mailto:sage [2021/10/16(土) 09:45:33.38 ID:yphHFJu4.net]
文字クラスの1文字目で使う場合には範囲指定と誤解される可能性はないから、エスケープ不要なのでは、という疑問です

925 名前:デフォルトの名無しさん mailto:sage [2021/10/16(土) 09:59:33.13 ID:6ga3nra2.net]
>>886
エスケープをつけておいたほうが人間にとって読みやすく、後々パターンを改変した時にミスせずにすむ

926 名前:デフォルトの名無しさん mailto:sage [2021/10/16(土) 10:04:58.76 ID:6ga3nra2.net]
「○○してもいい」が「○○しなければならない」に置き換わってしまう人たまにいるけど、あまりPGに向いてないかもね

927 名前:デフォルトの名無しさん mailto:sage [2021/10/16(土) 10:40:42.04 ID:Yt5Fp2tM.net]
悔しそう

928 名前:デフォルトの名無しさん mailto:sage [2021/10/16(土) 10:48:25.13 ID:PMQb3sBw.net]
質問者より先に回答者に対してあーだこーだ言ってくる奴にロクな奴はいない
と同時に質問者の自演の可能性もある
>>885-886みたいなのは分かってて聞いてるからそういうレスこそ不要なのでは、という疑問です

929 名前:デフォルトの名無しさん mailto:sage [2021/10/16(土) 11:02:19.42 ID:+QyAV8Aw.net]
悔しそう

930 名前:デフォルトの名無しさん mailto:sage [2021/10/16(土) 11:15:38.86 ID:6ga3nra2.net]
あまり偏屈な人は回答しないほうがいいと思うけど、現実世界で阻害されている偏屈な人ほどねじ曲がった回答に生きがいを見出してしまう



931 名前:デフォルトの名無しさん mailto:sage [2021/10/16(土) 11:24:47.28 ID:PMQb3sBw.net]
機械から見て無駄のない極力短い正規表現を作れる俺カッコイイみたいな自己満な人もいるからねえ
おれは、ぱっと見て分かりやすいとか修正しやすい書き方するなあ
そうすることでデメリットが多くなってしまうなら別だけどね
まぁケチ付けることが目的の人がいても仕方ないけど

932 名前:デフォルトの名無しさん mailto:sage [2021/10/16(土) 11:25:33.22 ID:xOMo/rXl.net]
けど...しまう

933 名前:デフォルトの名無しさん mailto:sage [2021/10/16(土) 11:27:32.20 ID:PMQb3sBw.net]
本当に知識がある人は知識マウント取らずに、
なぜそういう回答をしているのか推察できるからいちいち突っ込まない
どうしても回答したい場合は、他の回答者には触れず回答だけ書く

934 名前:デフォルトの名無しさん mailto:sage [2021/10/16(土) 11:42:35.80 ID:y3W2HSwc.net]
874だけで終わっとけば良かったのにw

935 名前:デフォルトの名無しさん mailto:sage [2021/10/16(土) 11:52:56.32 ID:yYNJhuOF.net]
自演バレバレでも「悔しそう」に反応せずにはいられなかったんだろ

長文が自己紹介過ぎて笑える

936 名前:デフォルトの名無しさん [2021/10/16(土) 11:59:55.88 ID:6ga3nra2.net]
MUST、SHOULD、MAYの理解が不完全な人はなんでもMUST扱いしたがる
冗長性を理解できない着物警察の思考様式

937 名前:デフォルトの名無しさん mailto:sage [2021/10/16(土) 12:03:18.95 ID:qP61rC0r.net]
おれも-はエスケープするな
つか+もエスケープする
エスケープ可能なのはエスケープしと

938 名前: []
[ここ壊れてます]

939 名前:デフォルトの名無しさん mailto:sage [2021/10/16(土) 12:30:42.49 ID:9AQLH6H/.net]
俺は極力しない

940 名前:デフォルトの名無しさん mailto:sage [2021/10/16(土) 12:33:05.07 ID:FxLIumwg.net]
しないんじゃないかな



941 名前:デフォルトの名無しさん mailto:sage [2021/10/16(土) 12:39:14.15 ID:igFsF4z+.net]
ま ちょっと覚悟はしておけ

942 名前:デフォルトの名無しさん mailto:sage [2021/10/16(土) 12:41:17.72 ID:BzHPp6pT.net]
なんとなくプラスマイナスの順にしたいから ^[+\-]?[0-9]+ って書くかな

943 名前:デフォルトの名無しさん [2021/10/16(土) 12:47:32.25 ID:akCvqHZs.net]
質問者です
pythonなのでエスケープはr文字列頼りです

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

一応 if len(re.findall(pat, s)) == 1 かどうかで判定できてる気がするけど
方法としてはこれでいいんですよね?
すいません正規表現関係なくて

944 名前:デフォルトの名無しさん [2021/10/16(土) 12:53:25.01 ID:akCvqHZs.net]
しかもハット忘れて偶然できてただけだっった(笑)

うーむ

945 名前:デフォルトの名無しさん [2021/10/16(土) 12:59:33.37 ID:akCvqHZs.net]
^[-+]?[0-9]+$
こうか

946 名前:デフォルトの名無しさん mailto:sage [2021/10/16(土) 13:52:27.11 ID:wy7RR+Lb.net]
>>904
re.fullmatchで

947 名前:デフォルトの名無しさん [2021/10/16(土) 14:12:10.41 ID:UbsVp7JO.net]
fullmatchってあったのか
そりゃそうか

948 名前:デフォルトの名無しさん mailto:sage [2021/10/16(土) 14:38:49.46 ID:6SnREp4P.net]
正規表現スレで、円マークという誤解を招く表現はやめてほしい
バックスラッシュと表現すれば誤解を招かない

949 名前:デフォルトの名無しさん mailto:sage [2021/10/16(土) 15:20:00.23 ID:1kPG7eLG.net]
回答で円記号を使われるのは気になる
わざわざ置き換え指示するくらいなら最初から正しく書けばいいのに

950 名前:デフォルトの名無しさん mailto:sage [2021/10/16(土) 15:25:19.02 ID:CFrnAbxP.net]
承認欲求を満たせないと見るや他人を下げて自分を上げようとする人は
自己評価は高いんだけど周りからの評価は低く不満を溜め込んでるタイプ

5chあるあるだけど中には粘着する人もいるので気をつけようね



951 名前:デフォルトの名無しさん mailto:sage [2021/10/16(土) 16:28:23.09 ID:q69AYoXR.net]
ID:6ga3nra2のことか

952 名前:デフォルトの名無しさん mailto:sage [2021/10/16(土) 16:51:02.62 ID:UUKQ6Z7Y.net]
>>912
おしい!

953 名前:デフォルトの名無しさん mailto:sage [2021/10/16(土) 17:35:12.23 ID:VO4IgATZ.net]
"質問者"や"回答者"という立場を異常に強調するのは
"質問者"の承認が欲しくて堪らないから

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

攻撃の度合いが強い人ほど病んでる度合いも強い

954 名前:デフォルトの名無しさん mailto:sage [2021/10/16(土) 17:49:26.91 ID:hNeyEW9L.net]
「俺は\でエスケープしてるけど気になるなら取ってくれ」
で済ませられなかったのかねえ

955 名前:デフォルトの名無しさん mailto:sage [2021/10/16(土) 18:00:14.65 ID:QrnrtPBD.net]
>○○してもいい」が「○○しなければならない」に置き換わってしまう人
これ自分の紹介かよ
エスケープしなければならない病に罹ってるな

956 名前:デフォルトの名無しさん mailto:sage [2021/10/16(土) 18:03:05.28 ID:a3RnthCp.net]
香ばしい奴にイチイチ構うな
そうやって相手するからそこに価値を見出してレス乞食へと変質して行くんだ
スルー出来ないおまえらも似たようなガイジ予備軍

957 名前:デフォルトの名無しさん mailto:sage [2021/10/16(土) 18:03:38.95 ID:r+1DV466.net]
>>896 に一票
まあそういう所にしか突っ込めない人がいるって思ってりゃいいかと

958 名前:デフォルトの名無しさん [2021/10/16(土) 18:21:20.67 ID:6ga3nra2.net]
なにか勘違いしている人多いみたいなんで説明しとく

そもそもcharactter rangeでの先頭または末尾での-を明確に定義しているのはPerlとPythonぐらいしかなく、
正規表現ライブラリのpcre, re2, boost, Onigmo いずれの文書にも記述はない。
よってpcre, re2, boost, Onigmoで"[-az]", "[az-]", "[a\-z]" が同じ動作をする保証はない。

以下に示したOnigmoの文法説明では182行目で明確に'-'の使用を求めている。
https://github.com/k-takata/Onigmo/blob/master/doc/RE.ja

959 名前:デフォルトの名無しさん [2021/10/16(土) 18:26:32.71 ID:6ga3nra2.net]
誤:以下に示したOnigmoの文法説明では182行目で明確に'-'の使用を求めている。
正:以下に示したOnigmoの文法説明では182行目で明確に'-\'の使用を求めている。
https://github.com/k-takata/Onigmo/blob/master/doc/RE.ja

grepコマンドの組み込み正規表現の場合、文字集合で'-'を指定できるのは末尾のみ。以下にURLを添えとく。
https://linuxjm.osdn.jp/html/GNU_grep/man1/grep.1.html

960 名前:デフォルトの名無しさん [2021/10/16(土) 18:37:49.95 ID:6ga3nra2.net]
ちなみに、仕様書に先頭末尾の'-'に関する記述がないpcreやOnigmoでも"[-az]", "[az-]", "[a\-z]" が同じ動作をするのでひとまず安心していい



961 名前:デフォルトの名無しさん mailto:sage [2021/10/16(土) 18:50:30.23 ID:hNeyEW9L.net]
C#等、javascript,Powershell,WSH、Rubyなど全部同じ動作する
エスケープを強要するものがあるのなら実例を出してみろよ

962 名前:デフォルトの名無しさん mailto:sage [2021/10/16(土) 18:58:45.87 ID:6ga3nra2.net]
念のため書いとくが、Java正規表現にも.NET正規表現にも文字集合の先頭末尾エスケープなしハイフンに関する記述は見当たらない

Javaの正規表現
https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/util/regex/Pattern.html

.NET の正規表現
https://docs.microsoft.com/ja-jp/dotnet/standard/base-types/regular-expression-language-quick-reference

963 名前:デフォルトの名無しさん mailto:sage [2021/10/16(土) 19:02:53.95 ID:6ga3nra2.net]
>>922
実際のプログラムがどう動くかはあまり重要じゃないね
仕様書がすべてだよ

964 名前:デフォルトの名無しさん mailto:sage [2021/10/16(土) 19:03:26.64 ID:hNeyEW9L.net]
>>923
引っ込みがつかなくなったのかよ
後付の理論だってことは、>>887-888を見ればよく分かるぞ

965 名前:デフォルトの名無しさん mailto:sage [2021/10/16(土) 19:12:04.98 ID:nVB+19gH.net]
>>923
> .NET正規表現にも文字集合の先頭末尾エスケープなしハイフンに関する記述は見当たらない

明示はしてないけど
a hyphen character (-) is always interpreted as the range separator unless it is the first or last character of the group.
って書いてあるから最初か最後なら範囲文字として解釈はされないだろうね

で最初の文字のケースはないけど最後の文字のケースは例示されてる
[\s-] ⇒ Match a hyphen or a white-space character.

https://docs.microsoft.com/en-us/dotnet/standard/base-types/character-classes-in-regular-expressions

966 名前:デフォルトの名無しさん mailto:sage [2021/10/16(土) 19:12:23.95 ID:6ga3nra2.net]
>>925
何度も書くが、MUST、SHOULD、MAYはまったく違うものだよ
混同しないことだ

967 名前:デフォルトの名無しさん mailto:sage [2021/10/16(土) 19:17:00.69 ID:6ga3nra2.net]
>>922
.NETを列挙せず、C#・PowerShell・WSHを別々に列挙した時点で ID:hNeyEW9L が素人さんなのはよくわかった

>>926
訂正ありがとう

968 名前:デフォルトの名無しさん mailto:sage [2021/10/16(土) 19:23:50.02 ID:6ga3nra2.net]
Onigmoなにそれうまいの、という人のために説明しとくとサクラエディタの正規表現はOnigmoを採用してる

969 名前:デフォルトの名無しさん [2021/10/16(土) 19:27:24.61 ID:BO6yK2Ly.net]
C++の正規表現クラスは引数でJavascriptの正規表現を選べます。
これは良いかもしれない。

970 名前:デフォルトの名無しさん mailto:sage [2021/10/16(土) 19:30:44.77 ID:ciQBbSHj.net]
(規格確認してないけど)そもそもC++のstd::regexってECMA-262の規格を参照, になってなかったっけ
Boost::RegexはPCRE2とかの表現力があったけど標準入りの時点で文書化された規格参照になってた記憶



971 名前:デフォルトの名無しさん [2021/10/16(土) 19:35:15.45 ID:BO6yK2Ly.net]
std::regexはgrepとかawkとかあまりうれしい人が居無さそうなオプションもあるんだけど、ECMAScriptは多くの人がうれしくなるのでは?

972 名前:デフォルトの名無しさん mailto:sage [2021/10/16(土) 19:47:08.22 ID:1zNIFcv9.net]
WSHの正規表現って言語エンジン(VBScript、JScript等)それぞれで実装されてるのかと思ってたけど、俺の勘違い?
.NETの正規表現エンジンが使われることがあったりする?

973 名前:デフォルトの名無しさん mailto:sage [2021/10/16(土) 20:29:00.06 ID:Kqq2n1Gw.net]
マジキモいっすね
エスケープするしないの問題じゃないのに「なにか勘違いしてる人多いみたいなんで説明しとく」てwww

974 名前:デフォルトの名無しさん mailto:sage [2021/10/16(土) 20:37:45.55 ID:wy7RR+Lb.net]
PCREに明記されてるからね
https://www.pcre.org/original/doc/html/pcrepattern.html#SEC9

The minus (hyphen) character can be used to specify a range of characters in a character class. For example, [d-m] matches any letter between d and m, inclusive. If a minus character is required in a class, it must be escaped with a backslash or appear in a position where it cannot be interpreted as indicating a range, typically as the first or last character in the class, or immediately after a range.

975 名前:デフォルトの名無しさん mailto:sage [2021/10/16(土) 20:39:03.57 ID:I2E7AJLT.net]
>>933
スクリプトエンジンの指定(jscript9等)はできるけど、正規表現エンジンの指定はできないはず
少なくとも自分は知らない

976 名前:デフォルトの名無しさん mailto:sage [2021/10/16(土) 20:43:45.26 ID:75KO56vr.net]
論理的に反論できなくなると人格攻撃するしかなくなっちゃうんだろうね

977 名前:デフォルトの名無しさん mailto:sage [2021/10/16(土) 20:50:25.14 ID:hNeyEW9L.net]
>>935
さすがに[b-d-z]は気持ち悪いな

978 名前:デフォルトの名無しさん mailto:sage [2021/10/16(土) 20:56:26.53 ID:kPRtjNBv.net]
質問した人は気を悪くしたかもしれないけど
>>886の質問はいい質問だったね
いろんな意味で

979 名前:デフォルトの名無しさん [2021/10/16(土) 20:56:48.25 ID:6ga3nra2.net]
>>935
訂正ありがとう

それはさておき、先頭または末尾でハイフンを指定する場合はエスケープしてはならないみたいな仕様はあるんだろうか?

980 名前:デフォルトの名無しさん mailto:sage [2021/10/16(土) 21:00:15.89 ID:hNeyEW9L.net]
>>927
どこを読めばそうなる?
俺は最初からそういう哲学を持っているのなら、絶対に>>887-888のような回答にはなってないだろって言ったんだぞ



981 名前:デフォルトの名無しさん [2021/10/16(土) 21:00:48.73 ID:6ga3nra2.net]
>>939
仕様外動作に備えてエスケープは必要、というのが回答になると思いますけどね

982 名前:デフォルトの名無しさん [2021/10/16(土) 21:02:06.43 ID:6ga3nra2.net]
>>941
理由をひとつだけに絞ってるのはなぜ?
人間側の理由、仕様側の理由、それぞれあるでしょ

983 名前:デフォルトの名無しさん mailto:sage [2021/10/16(土) 21:05:15.08 ID:hNeyEW9L.net]
>>943
レス内容と時間経過で、最初はそんなことを露ほども思ってなかったのが
理由を探してそっちのほうに話を持っていったのが分かるからさ

984 名前:デフォルトの名無しさん [2021/10/16(土) 21:12:06.82 ID:6ga3nra2.net]
>>944
全然違う。>>887-888は人間側の理由として完結しているけど追加で、仕様側の理由も書いただけだよ
書いた本人が言ってるのに推理小説みたいに無駄に裏読みしても意味ないよ
あなた、ひょっとしてモリカケ問題にのめりこんでるタイプ?

985 名前:デフォルトの名無しさん mailto:sage [2021/10/16(土) 21:12:31.27 ID:PMQb3sBw.net]
>>897
>>904でお礼の一言もないから自演なのかやっぱ

986 名前:886 mailto:sage [2021/10/16(土) 21:15:28.50 ID:75KO56vr.net]
思ってたよりエスケープ可能なのはエスケープする人はいないもんなんだな
オレは機械的にエスケープしてるのも少なくないのでより多めではあるんだろうけど

987 名前:デフォルトの名無しさん mailto:sage [2021/10/16(土) 21:17:13.92 ID:hNeyEW9L.net]
>>945
>>888で、してもいい、しなければいけないに拘ってるところが
仕様に明記されてないから書くべきとの哲学を持ってる人がするレスではない
ということ

988 名前:デフォルトの名無しさん mailto:sage [2021/10/16(土) 21:24:54.32 ID:6ga3nra2.net]
>>948
仕様に明記されてないということは「仕様外」という意味にしかならないよ
書くべきと思い込んでいるのはあなたのほうだし、技術板で哲学とかなにを言いたいのかわからないし
精神病んで休職してるのが伝わってくるから、そのくらいにしとけば?

989 名前:デフォルトの名無しさん mailto:sage [2021/10/16(土) 21:31:11.06 ID:iYaW2gC3.net]
>>936
指定したスクリプトエンジンの中で .NET の正規表現エンジン使う奴はあるのか?
ってことだと思う
俺の知る限り多分ない

990 名前:デフォルトの名無しさん mailto:sage [2021/10/16(土) 21:33:41.76 ID:hNeyEW9L.net]
>>888は、書かなくてもいいというのを肯定してて、けれども書いたほうがより良い
という考えでないと出てこない
最初から書くべきだと思ってる人なら書いてない文章だ



991 名前:デフォルトの名無しさん mailto:sage [2021/10/16(土) 21:36:54.55 ID:PMQb3sBw.net]
質問者と回答者(ID:6ga3nra2)が同一人物で自演って事?

992 名前:デフォルトの名無しさん mailto:sage [2021/10/16(土) 21:43:42.85 ID:6ga3nra2.net]
>>951
マジで病んでるな
好きなだけ赤木ファイルの謎を追いかけたらいい

993 名前:デフォルトの名無しさん mailto:sage [2021/10/16(土) 21:54:38.21 ID:6ga3nra2.net]
Microsoft Beefs Up VBScript with Regular Expressions
https://docs.microsoft.com/en-us/previous-

994 名前:versions/windows/internet-explorer/ie-developer/scripting-articles/ms974570(v=msdn.10)?redirectedfrom=MSDN


Regular Expression Syntax (JavaScript)
https://docs.microsoft.com/en-us/previous-versions/1400241x(v=vs.100)
[]
[ここ壊れてます]

995 名前:デフォルトの名無しさん mailto:sage [2021/10/16(土) 21:57:37.86 ID:kP7MiIn1.net]
色々な意味や方面でガチの人は理解しないし理解されないよなあ

996 名前:デフォルトの名無しさん [2021/10/16(土) 22:11:08.63 ID:caYv+2Nn.net]
ホモ以外は帰れ

997 名前:デフォルトの名無しさん mailto:sage [2021/10/16(土) 22:24:05.01 ID:6ga3nra2.net]
むしろホモが帰れ

998 名前:デフォルトの名無しさん mailto:sage [2021/10/16(土) 23:17:21.33 ID:senq7Tfg.net]
あやふやだったら全部エスケープすればまぁ動く
同僚やlinterに文句言われるくらい

999 名前:デフォルトの名無しさん mailto:sage [2021/10/16(土) 23:39:42.65 ID:1zNIFcv9.net]
>>936
>>950
ありがとう
WSH共通のオプション的なものにしろスクリプトエンジン側にしろ、.NETの正規表現エンジンが使われるケースが思いつかなかったんだけど、一般的な認識みたいで安心したよ

1000 名前:デフォルトの名無しさん mailto:sage [2021/10/17(日) 07:56:05.72 ID:mIAwyFSs.net]
esc幾つも入れるより、\Q\Eの方がスマートな気がしてるんだけどあんまり使われないのは何で?



1001 名前:デフォルトの名無しさん mailto:sage [2021/10/17(日) 08:28:28.33 ID:N+Nl+RmC.net]
Perl以外じゃ使えないから
まぁ、他でもメタ文字をそのまま使えるオプションが有るのがほとんどだけどね

1002 名前:デフォルトの名無しさん mailto:sage [2021/10/17(日) 10:24:56.81 ID:mIAwyFSs.net]
そうなのか、ありがとう

1003 名前:デフォルトの名無しさん mailto:sage [2021/10/17(日) 18:01:06.39 ID:p8oc8mfi.net]
Pythonお使いの方、正規表現は、reとregexのどっち使っていますか?
regexがアトミックグループをサポートしている、などという話は知識として知ってはいるのですが、
reが残っているということはreにも実用上の優位点があるということですよね。それは何なのでしょうか

1004 名前:デフォルトの名無しさん mailto:sage [2021/10/17(日) 21:30:56.51 ID:E1qJZsEj.net]
ないよ。regex使えるなら使うべき

1005 名前:デフォルトの名無しさん mailto:sage [2021/10/17(日) 23:24:37.14 ID:rEReGylo.net]
コアに入れてしまった以上、気楽になくせないだけじゃないの

1006 名前:デフォルトの名無しさん mailto:sage [2021/10/18(月) 00:56:20.45 ID:fcbr/1wh.net]
昔reで書いたコードを書き直さずに使えるのが最大のメリットだと思うけど

1007 名前:デフォルトの名無しさん mailto:sage [2021/10/18(月) 01:10:10.73 ID:IgDyba7Y.net]
「後方互換を破壊するに足る理由」が無いので、そのまま残されている

1008 名前:デフォルトの名無しさん mailto:sage [2021/10/18(月) 07:31:05.25 ID:XtnzC8HY.net]
>>947
だってエスケープしてるなんて
おともだちに知られたら恥ずかしいし

1009 名前:デフォルトの名無しさん [2021/10/18(月) 08:28:55.87 ID:CI2UP6iO.net]
エスケープは恥だが役に立つ

1010 名前:デフォルトの名無しさん mailto:sage [2021/10/18(月) 08:46:32.68 ID:PPwA/bGd.net]
python2からpython3への後方互換の捨てっぷりを思えば、
さっさとreを捨ててregexが標準になってもおかしくないはずだが、そうなっていないのはなにか事情があるのかな?



1011 名前:デフォルトの名無しさん [2021/10/18(月) 08:55:29.74 ID:K+CpcSgx.net]
reで不便したことないけどregexにしかない有用機能ってなにがあるの?

1012 名前:デフォルトの名無しさん mailto:sage [2021/10/18(月) 14:36:27.24 ID:TKHV76Qy.net]
日本語などの処理とか

1013 名前:デフォルトの名無しさん mailto:sage [2021/10/19(火) 11:49:02.44 ID:q6QnFAh4.net]
pythonistaでregexインストールしようとしたら、c言語使ってるんで無理だよ的メッセージが出ました。
そうなると、re使うしかないわけで、そういう意味では存在価値ありますね。

1014 名前:デフォルトの名無しさん mailto:sage [2021/10/19(火) 13:36:44.32 ID:WfNe98xT.net]
reがregexを取り込めばいいってだけなのでは?
少なくともreが対応してる範囲でregexも同様に使えるということだし
あまり大きいと組み込み用途とかでは難しいのかもしれないけど

urllibはそんな感じで後発を取り込んでるよね

1015 名前:デフォルトの名無しさん mailto:sage [2021/10/19(火) 14:38:55.63 ID:4nkSMT7f.net]
取込みして欲しい

1016 名前:デフォルトの名無しさん [2021/10/23(土) 08:19:13.63 ID:eRVGYV8c.net]
AHKで、文字列中の単語の間にスラッシュがある場合はその単語の後ろ(区切り文字やピリオドの前)に閉じ括弧を付けたいのだけど、例えばRegExReplaceを使って実現する方法を誰か教えていただけないでしょうか。
こんな、感じにしたいと思ってます。
変換前: aaa bbb/ccc ddd
変換後: aaa bbb/ccc) ddd

1017 名前:デフォルトの名無しさん mailto:sage [2021/10/23(土) 11:35:17.68 ID:0zN24xO8.net]
(\w+\/\w+)
$1)
文字列に日本語が入るなら\wを適切なやつに変えて

1018 名前:デフォルトの名無しさん [2021/10/23(土) 15:13:21.57 ID:eRVGYV8c.net]
>>977
グループ化って、こうやって使うんでうね。すごく勉強になりましたし、非常に助かりました。ありがとうございます。

1019 名前:デフォルトの名無しさん [2021/10/27(水) 20:23:03.98 ID:TntzyF5u.net]
●Regular Expressionの使用環境
javascript
●検索か置換か?
検索
●説明
abcとdefというキーワードが最大1回順不同で出現するのに一致したい
●対象データ
abc def→一致
def abc→一致
abc→一致
def→一致
→空白のみでも一致
→何もなくても一致
abc def g→異なる単語が入っていると不一致

簡単な書き方はありますか?

1020 名前:デフォルトの名無しさん mailto:sage [2021/10/27(水) 20:44:43.49 ID:dNMmh9m9.net]
>>979
var str = 'なんか';
str.replace(/abc|def/g, '');
if (str.trim() === '') console.log('一致');
else console.log('不一致');



1021 名前:デフォルトの名無しさん mailto:sage [2021/10/27(水) 21:13:34.52 ID:dNMmh9m9.net]
str = str.replace(/abc|def/g, '');
だった

1022 名前:デフォルトの名無しさん [2021/10/27(水) 21:45:36.38 ID:TntzyF5u.net]
ありがとうございます。
ちなみに正規表現だけで上記は可能ですか?

1023 名前:デフォルトの名無しさん mailto:sage [2021/10/27(水) 22:06:08.57 ID:BM1dPtJu.net]
javascript使うんだろ
何で他の式を使ったらダメなの?
まあorに空白を入れとけばtrimは不要かもね
あと最大1回とは2回出るとダメってことなのか?
abcabc→不一致?

1024 名前:デフォルトの名無しさん mailto:sage [2021/10/27(水) 22:38:09.67 ID:FvdEROp3.net]
>>979
素直に
^ *(?:(?:abc)? *(?:def)?|(?:def)? *(?:abc)?) *$
じゃだめなの?

1025 名前:デフォルトの名無しさん [2021/10/27(水) 22:44:32.89 ID:TntzyF5u.net]
abcabcはabcが2回でるので不一致です。
javascriptの場合教えてもらったコードで問題ないですね。
正規表現だけで表現できると便利だなーとおもったまでです。

>>984 ありだと思います。

1026 名前:デフォルトの名無しさん mailto:sage [2021/10/27(水) 23:05:28.48 ID:h1zi3AMh.net]
967はabcabcに一致するんじゃないかなあ

^(?: |(abc|def)(?!.*\1))*$

1027 名前:デフォルトの名無しさん mailto:sage [2021/10/28(木) 09:10:36.00 ID:Fr3tDLQH.net]
>>986
こんな書き方できたんだ。知らんかった。

1028 名前:デフォルトの名無しさん mailto:sage [2021/10/29(金) 00:41:45.01 ID:p2ooNE+J.net]
こんなスレがあったんですね
今後お世話になろうと思います^^

1029 名前:デフォルトの名無しさん mailto:sage [2021/10/30(土) 19:56:09.69 ID:y9dUwbDd.net]
Pythonの正規表現を変数などに入れておき、他の正規表現の一部として再利用する方法ってあるのでしょうか。

第一の正規表現を
hoge =[abcd]
としてhogeに格納しておいて、

別の正規表現で
(【hoge】|[efg])

のように、【】の部分で変数を引用するイメージです。

1030 名前:デフォルトの名無しさん mailto:sage [2021/10/30(土) 20:12:23.79 ID:FdnrrKGs.net]
>>989
普通に文字列で持っておいて結合するだけじゃダメなの?
hoge = r'[abcd]'
...
r'(' + hoge + r'|[efg])'



1031 名前:デフォルトの名無しさん mailto:sage [2021/10/30(土) 20:13:14.90 ID:y9dUwbDd.net]
>>979
試しに考えてみました。
問題あればご指摘ください。

abc defのときに、間の空白がどの程度許容されるのかがわかりませんが、とりあえず1文字の空白があってもなくても良い\s?、ということで考えます。


場合分けすると、

abcが冒頭に来るもの(defはあってもなくても可)
defが冒頭にくるもの(abcはあってもなくても可)
どちらもなく、空白はあってもなくても可
の3種類にわけられますから、

^abc\s?(def)?
^def\s?(abc)?
^\s?

であり、このどれかがあてはまればいいので、
(^abc\s?(def)?| ^def\s?(abc)?|^\s?)
となります。

^は3つに共通しているので、カッコの外に括り出してもいいですね。すると
^ (abc\s?(def)?| def\s?(abc)?|\s?)
となります。

1032 名前:デフォルトの名無しさん mailto:sage [2021/10/30(土) 20:19:09.28 ID:y9dUwbDd.net]
3つを合成する時に間に変なスペースが入ってしまっていて、マッチを妨げていました。

^(abc\s?(def)?|def\s?(abc)?|\s?)
ですね。

1033 名前:デフォルトの名無しさん mailto:sage [2021/10/30(土) 20:27:08.27 ID:y9dUwbDd.net]
>>990
それは盲点でした!
正規表現オブジェクトの再利用ということばかり考えていましたが、複数の正規表現に同じ文字列を代入すれば同一の効果が得られますね。

ありがとうございます。

1034 名前:デフォルトの名無しさん mailto:sage [2021/10/30(土) 22:28:52.36 ID:lg5lGqAB.net]
>>991もですが色々アイデアありがとうございます。

空白の条件は書き忘れですね。

abcとdefの間は空白一つ以上、先頭、末尾は空白あっても無くてもOKでした。

1035 名前:デフォルトの名無しさん mailto:sage [2021/10/30(土) 23:11:57.73 ID:y9dUwbDd.net]
>>994
そうであれば

^(abc\s+(def)?|def\s+(abc)?|\s?)\s?$
で良いと思います。

間の空白を1以上とし、
忘れていた行末$を補い、
パターンの後に空白があっても大丈夫なようにしました。

1036 名前:デフォルトの名無しさん mailto:sage [2021/10/30(土) 23:35:05.65 ID:4m+F11LP.net]
>>995
それ ' ABC DEF' みたいに先頭に空白があるケースにマッチしなくね?

1037 名前:デフォルトの名無しさん mailto:sage [2021/10/30(土) 23:56:32.32 ID:OkX3vbx3.net]
>>995
それ 'ABC' みたいに末尾に空白がないケースにマッチしなくね?

1038 名前:デフォルトの名無しさん mailto:sage [2021/10/31(日) 00:22:50.48 ID:Os0N65jy.net]
>>997
ご指摘ありがとうございます。
大変勉強になりました

^\\s?(abc(\s+def)?|def(\s+abc)?|\s?)\s?$

のように直しました。
abc のあとにdefが来るとき、
defのあとにabcが来るとき、
これらの場合のみ空白が必須なので、
空白と後に続くものを、まとめて括弧に入れるべきでした。

1039 名前:デフォルトの名無しさん mailto:sage [2021/10/31(日) 00:32:18.65 ID:Os0N65jy.net]
^\s?(abc(\s+def)?|def(\s+abc)?|\s?)\s?$

冒頭のドルマークが1つ多かったです。
すいません。


あとは、冒頭に\s?を置くのであれば、選択肢の3つ目は不要ですね。
仮に空白文字しかない場合、冒頭の\s?が行末までマッチしてしまいますから、選択肢3つ目で空白がマッチすることはない。
というわけで、3つ目の選択肢を消した別解を考えました。

^\s?(abc(\s+def)?|def(\s+abc)?)?\s?$

1040 名前:デフォルトの名無しさん mailto:sage [2021/10/31(日) 00:49:08.05 ID:Os0N65jy.net]
何度もすいません。
行頭と行末は、*を使うつもりが、?を使ってたから変なコメントになってました。

^\s*(abc(\s+def)?|def(\s+abc)?)?\s*$

これで決定校です!



1041 名前:デフォルトの名無しさん mailto:sage [2021/11/03(水) 09:32:14.31 ID:u//4ywbB.net]
「正規表現一覧表がパクられた」――DeNAのRPAサービスで個人ブログからの無断転載が発覚 取り下げに
https://www.itmedia.co.jp/news/articles/2111/02/news174.html

1042 名前:デフォルトの名無しさん mailto:sage [2021/11/03(水) 10:19:24.89 ID:3o+9eeb8.net]
それ見たけど大昔から結構どこにでもある様な表だよね
自意識過剰じゃね?

1043 名前:デフォルトの名無しさん [2021/11/03(水) 11:54:53.38 ID:K+2zXBgv.net]
https://murashun.jp/article/programming/regular-expression.html

1044 名前:デフォルトの名無しさん [2021/11/03(水) 13:01:45.68 ID:6fv+OhcH.net]
客観的に観てもコピられた可能性は高いと思うが
裁判で勝てるかどうかは微妙

1045 名前:デフォルトの名無しさん mailto:sage [2021/11/03(水) 13:24:24.94 ID:U7i9huA/.net]
そんなことより改変もまともにできないのはヤバい

正規表現の例 マッチする例
Coo+el    Coopel

https://pbs.twimg.com/media/FC7n-5zaUAETKej.jpg

1046 名前:デフォルトの名無しさん mailto:sage [2021/11/03(水) 14:52:06.73 ID:2qQw+lMw.net]
パクられ元にパクられだ疑惑(はてブ情報)
 web.archive.org/web/20210302113534/https://troutlurefishing.jp/regex.htm

パクられ元
 web.archive.org/web/20210118220247/https://murashun.jp/article/programming/regular-expression.html

パクリ元
 web.archive.org/web/20211030075247/https://coopel.ai/help-center/191

1047 名前:デフォルトの名無しさん mailto:sage [2021/11/03(水) 14:56:33.55 ID:V2aH3YMI.net]
態と元・先の使い方がおかしい
パクられ先では?

1048 名前:デフォルトの名無しさん mailto:sage [2021/11/03(水) 16:19:18.89 ID:epFspok0.net]
そもそもgooooooogleにしておかないでgo...gleにしてる時点で
元パクリサイト(今回の騒動の主)のパクリ確定だな

1049 名前:デフォルトの名無しさん mailto:sage [2021/11/03(水) 16:22:38.72 ID:epFspok0.net]
ん? 上の2つどっちが先なんだ?

1050 名前:デフォルトの名無しさん mailto:sage [2021/11/03(水) 16:31:21.33 ID:epFspok0.net]
アーカイブされた時間は真ん中が先だな
先後がよくわからんので、>>1008の結論については取り消しておく

正規表現を使わない場合、同じ文字の繰り返しって、...以外ではどう表現する?
gogle, google, gooogle ... という例ならある程度わかるんだが



1051 名前:デフォルトの名無しさん mailto:sage [2021/11/03(水) 16:55:49.57 ID:X6BWa2vR.net]
>>1010
アーカイヴではそうなる
はてブ論調では後述のように解されてるけど、根拠不明
https://b.hatena.ne.jp/entry/s/www.itmedia.co.jp/news/articles/2111/02/news174.html

> オリジナルも別のサイト https://troutlurefishing.jp/regex.htm の改変に見えるけど、仮の図表として入れてたのをそのまま出しちゃったんだろうなぁ。。
https://b.hatena.ne.jp/entry/4710603849468972162/comment/roshi

1052 名前:デフォルトの名無しさん mailto:sage [2021/11/03(水) 19:48:21.44 ID:ebAE+z9+.net]
◆関連サイト
正規表現メモ
www.kt.rim.or.jp/~kbk/regex/regex.html
Perl正規表現雑技
www.din.or.jp/~ohzaki/regex.htm

詳説 正規表現
www.oreilly.co.jp/books/9784873113593/
正規表現クックブック
www.oreilly.co.jp/books/9784873114507/

正規表現プログラミングFAQ
capslockabcjp.kitunebi.com/faq.html
.NET Framework の正規表現 | Microsoft Docs
https://docs.microsoft.com/ja-jp/dotnet/standard/base-types/regular-expressions
正規表現 - JavaScript | MDN
https://developer.mozilla.org/ja/docs/Web/JavaScript/Guide/Regular_Expressions
鬼車
https://github.com/kkos/oniguruma
鬼雲
https://github.com/k-takata/Onigmo
bregonig.dll(鬼雲の正規表現をサクラエディタ等で使用するためのライブラリ)
k-takata.o.oo7.jp/mysoft/bregonig.html
Boost.Regex 1.45.0 (日本語訳)
alpha.sourceforge.jp/devel/boost.regex_ja_1_45_0.pdf

秀丸: 複数行にまたがる検索について
homepage2.nifty.com/jr-kun/hidemaru_qa/4_regulr.html#RETURNS

サクラエディタ: 改行
d.hatena.ne.jp/myokoym/20101219/1292779058
※ サクラエディタでは複数行に渡る検索・置換は出来ません。

1053 名前:デフォルトの名無しさん [2021/11/03(水) 20:02:22.42 ID:ebAE+z9+.net]
次スレ
Regular Expression(正規表現) Part16
https://mevius.5ch.net/test/read.cgi/tech/1635936601/

1054 名前:1001 [Over 1000 Thread.net]
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 778日 21時間 37分 11秒

1055 名前:過去ログ ★ [[過去ログ]]
■ このスレッドは過去ログ倉庫に格納されています






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<293KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef